所以,我有这个简化的数据框,我使用plotly.graph_objects
来绘制一个带有文本注释的堆叠条形图。
我从薪水栏中得到了我想要的文本,但在年龄栏中,我无法得到相同的文本,因为年龄栏的值要低得多。我希望这些注释大小相同,并且位于每个条的顶部。
如何使文本注释在“年龄”列中也可见
请在下面找到我的代码:
data = {'Name':['Tom', 'Nick', 'Jack'],
'Age':[18, 21, 19],
'Salary':[500, 700, 900]}
df_new=pd.DataFrame(data)
fig = go.Figure(go.Bar(x = df_new["Name"],
y = df_new["Age"],name='Age',text=df_new["Age"],
textposition='outside'))
fig.add_bar(x = df_new["Name"],
y = df_new["Salary"],name='Salary',text=df_new["Salary"],
textposition='outside')
fig.update_layout(barmode='stack',
title = 'Age - Salary',
xaxis_title="Name",
yaxis_title="Age / Salary")
提前谢谢
我认为你必须从两种可能的解决方案中进行选择。首先,通过使用
barmode = stack
参数,可以对年龄和薪水的值进行叠加,从而求和。酒吧的高度将为age + salary
,这样汤姆酒吧的高度将为500 + 18 = 518
。我建议不要这样做,因为我认为高度应该反映标注值解决方案1-分组条形图
此解决方案基于将barmode更改为
barmode = group
。这将生成两个单独的条,它们有自己的标注和反映其值的高度。 我还添加了width
参数来生成更漂亮的纵横比解决方案2-添加辅助y轴
我更喜欢这种解决方案,因为这两个类别的相对大小都可以扩展到各自的领域;这使得图表更具可读性。这将使用
make_subplots
创建两个轴和secondary_y
参数。我通过使用轴的宽度和范围使两个条都可见根据数据,您必须根据自己的喜好手动重新缩放。您还可以合并
opacity
作为透视条,但仍然存在数据调用重叠的风险相关问题 更多 >
编程相关推荐