【问题标题】:Adding multiple labels at once for matplotlib subplots from pandas dataframe一次为 pandas 数据框中的 matplotlib 子图添加多个标签
【发布时间】:2015-06-10 09:36:03
【问题描述】:

我在这里迷路了,可能混淆了 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 标签?

【问题讨论】:

  • 您的代码中的params 是什么?请把它设为MWVE 好吗?
  • 抱歉,params 是数据帧的(子集)。

标签: python pandas matplotlib


【解决方案1】:

试试

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

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

另一种方法是

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

【讨论】:

  • 第二种方法就像一个魅力......想知道为什么我没有尝试这个:-)
  • 酷。我之前从未使用过labels 参数,所以不确定它应该做什么
猜你喜欢
  • 2021-03-02
  • 2022-07-11
  • 2021-11-13
  • 2019-04-24
  • 1970-01-01
  • 1970-01-01
  • 2020-12-13
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多