我有一个数据框,我正在使用ipython工作的pandas进行策划。我正在导入通常的东西,然后绘制数据框
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
traydata_A[('x_TmId', 'Trays')].plot()
plt.xlabel('Hour of the day')
plt.ylabel('Number of picked/despatched trays')
并希望通过使用(例如在this question)
中绘制实际数据ax = plt.gca()
line = ax.lines[0]
最终结果是
IndexError Traceback (most recent call last)
<ipython-input-220-d211b85302a5> in <module>()
1 ax = plt.gca()
----> 2 line = ax.lines[0]
IndexError: list index out of range
我做错了什么?我确信我对pandas如何连接到matplotlib有很深的误解!
答案 0 :(得分:2)
您必须确保使用pandas plot function返回的轴。在您的代码中ax = plt.gca()
返回的轴不同于pandas使用的轴。确保在同一上下文中执行代码,或将pandas轴保存到中间变量中。完整的例子:
s = pd.Series(data=[5850000, 6000000, 5700000, 13100000, 16331452], name='data')
ax = s.plot()
print(ax.get_lines()[0].get_xydata())
[[ 0.00000000e+00 5.85000000e+06]
[ 1.00000000e+00 6.00000000e+06]
[ 2.00000000e+00 5.70000000e+06]
[ 3.00000000e+00 1.31000000e+07]
[ 4.00000000e+00 1.63314520e+07]]
来自matplotlib.pyplot.gca的文档:
获取与给定关键字args匹配的当前数字的当前Axes实例,或创建一个。
[...]
如果当前轴不存在[..],将创建相应的轴,然后返回。