2017-05-23 57 views
1

我有一個數據框,我正在與在ipython中工作的熊貓一起繪圖。我導入平常的東西,然後繪製數據幀如何從熊貓圖中提取數據?

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 

我做錯了什麼?我相信我對大熊貓如何連接matplotlib有深刻的誤解!

+0

爲什麼要從繪圖中提取數據?如果在繪製的數據框中有正確的數據, –

+0

在這種特殊情況下,我可以輕鬆修改數據幀本身。我們假設它是一個更復雜的直方圖。是的,它是重複的,但答案在我的情況下不起作用。 – famargar

回答

1

您必須確保使用由熊貓圖function返回的座標軸。在您的代碼ax = plt.gca()中返回的軸與熊貓使用的軸不同。要麼確保在相同的上下文中執行代碼,要麼將熊貓軸保存到中間變量中。完整的示例:

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當前座標實例,或創建一個。

[...]

如果不存在當前座標[..]合適的軸將被創建,然後返回。