繁体   English   中英

从pandas数据帧中为matplotlib子图一次添加多个标签

[英]Adding multiple labels at once for matplotlib subplots from pandas dataframe

我在这里迷路了,可能会混淆matplotlib和pandas的功能。 我有一个数据框,我想在几个子图中绘制以分组相关数据。 一切都按预期工作,但我无法使传说工作(如果我不使用子图,这是非常简单的)。 这是我的代码:

fig, (acceleration, rotation, rotationspeed) = plt.subplots(3, 1, sharex=True, figsize=(20,15))

acceleration.plot(params[['accX', 'accY', 'accZ']], label=['X', 'Y', 'Z'])
acceleration.set_title('Acceleration')
acceleration.set_ylabel('Acceleration (G)')
acceleration.grid(b = pref_grid_visible)
acceleration.legend()

rotation.plot(params[['roll', 'pitch', 'yaw']])
rotation.set_title('Rotation')
rotation.set_ylabel('Rotation angle (radians)')
rotation.grid(b = pref_grid_visible)

rotationspeed.plot(params[['rotX', 'rotY', 'rotZ']])
rotationspeed.set_title('Rotation speed')
rotationspeed.set_ylabel('Rotation speed (radians / second)')
rotationspeed.grid(b = pref_grid_visible)

# Set shared x label
fig.text(0.5, 0.1, 'Time (ms)')

标签不是从数据框中自动读取的,而且从matplotlib的文档中我知道label应该包含一个字符串,这解释了为什么尝试显示加速的X,Y和Z轴不起作用。

标签设置错误的示例

如何为每个子图正确设置X,Y和Z标签?

尝试

acceleration = params[['accX', 'accY', 'accZ']].plot(ax=acceleration)
#rest of code

您可以将轴传递给df.plot ,它可以很好地处理图例,并返回相同的轴,您可以进一步操作它。

另一种方式

acceleration.plot(params[['accX', 'accY', 'accZ']])
acceleration.legend(['X', 'Y', 'Z'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM