当我试图从 Dataframe 的特定行绘制3个子图时,我得到一个奇怪的结果,即第三个子图的xticks间距不同,即使图的开始似乎是正确的。我推测这可能与数据有关,因为FE 57和FE 59都从接近0的索引开始,而FE 66的索引为3600。有没有一种方法可以从0开始用白色来绘制所有的xtick,这样所有的xtick就可以彼此垂直对齐了?
fig, axs = plt.subplots(3, 1)
ser = plotdf[(plotdf['CAN_address'] == 'FE 57') & (plotdf['CAN_cmd'] == 62)]['CAN_value_translated']
axs[0].plot(ser.index, ser.values)
axs[0].set_title('FE 57')
ser = plotdf[(plotdf['CAN_address'] == 'FE 59') & (plotdf['CAN_cmd'] == 62)]['CAN_value_translated']
axs[1].plot(ser.index, ser.values)
axs[1].set_title('FE 59')
ser = plotdf[(plotdf['CAN_address'] == 'FE 66') & (plotdf['CAN_cmd'] == 62)]['CAN_value_translated']
axs[2].plot(ser.index, ser.values)
axs[2].set_title('FE 66')
plt.show()
3条答案
按热度按时间b09cbbtk1#
应使用关键字参数
sharex=...
示例化子图。您可以将值指定为
'all'
、'row'
、'col'
、'none'
,如果您考虑子图的二维排列,这些值是有意义的。我说“你应该”而不是“你必须”,因为共享 x 轴只会将x刻度标签放置在底部子图上,你可能不同意这一点。
上面的图像生成为
如果你不喜欢标签只在底部,你可以这样做(下图)
PS如果图上的y数据是“相同的”,我建议你也使用
sharey=...
,这样不同示例之间的比较就可以立即进行(更好的是,在同一个子图中绘制y数据)。2nc8po8w2#
可以使用
set_xlim()
设置轴的限制:1u4esq0p3#
要垂直对齐多个子区的x刻度,可以先将所有子区的xlim设置为相同的值,以便它们都显示相同的x值范围。然后,可以使用每个子区的set_xticks方法指定x刻度的位置。