如何从熊猫图中提取数据?

时间:2017-05-23 08:16:49

标签: python pandas matplotlib

我有一个数据框,我正在使用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有很深的误解!

1 个答案:

答案 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实例,或创建一个。

     

[...]

     

如果当前轴不存在[..],将创建相应的轴,然后返回。