我有每年的总销售额和总发票(行)数据。我想将它们绘制在条形图和折线图中。我成功地用plotly制作了图表。
但是,我在调整辅助 y 轴从 0 开始并且不会通过绘图自动设置时遇到问题。
fig = make_subplots(specs=[[{"secondary_y": True}]])
fig.add_trace(go.Bar(
x=smy[smy['variable'] == 'Weekly_Sales_sum']['Year'],
y=smy[smy['variable'] == 'Weekly_Sales_sum']['value'],
name='Weekly Sales Sum'
))
fig.add_trace(go.Scatter(
x=smy[smy['variable'] == 'Weekly_Sales_size']['Year'],
y=smy[smy['variable'] == 'Weekly_Sales_size']['value'],
name='Weekly Sales Size',
yaxis='y2'
))
fig.update_layout(title='Bar and Line Chart for Weekly Sales Sum and Size',
yaxis=dict(title='Weekly Sales Sum'),
yaxis2=dict(title='Weekly Sales Size', overlaying='y', side='right', range=[0, None]))
pyo.iplot(fig)
我已经使用
fig
设置了update_layout
的range=[0, None]
来启动辅助轴从0开始,但它仍然不起作用。
将
range=[0, None]
设置为 yaxis2
实际上有效。正如@kevin41所指出的,2009.5
和2012.5
位于xaxis
上,因为x
中的年份被视为数字,所以您需要相应地设置x轴dtick
防止显示中间值:
fig.update_layout(xaxis_dtick=1)
事实上,您可能希望将它们(x 中的年份)视为日期,但您将使用
Jul 2012
而不是 2012.5
,因此您仍然需要指定 dtick
以仅显示年份:
fig.update_layout(xaxis=dict(type='date', dtick='M12'))
您也可以将它们视为类别,在这种情况下无需设置
dtick
:
fig.update_layout(xaxis_type='category')