2013-04-23 70 views
0

難以標出按文本/名稱字段和日期範圍分組的值。問題是,儘管我可以按名稱進行分組,併爲某些日期範圍生成圖表,但有些分組包含缺少日期值(僅僅是整個數據集的性質)。matplotlib:值錯誤x和y有不同的尺寸

也就是說,我可能很好地爲某些分組值計算了date_range('10/1/2013','10/31/2013'),但有些情況下在該範圍內不是'10/15/2013',因此會拋出本帖標題中提到的錯誤。

感謝您的任何意見!

plt.rcParams['legend.loc'] = 'best' 

    dtable = pd.io.parsers.read_table(str(datasource), sep=',') 
    unique_keys = np.unique(dtable['KEY']) 

    index = date_range(d1frmt, d2frmt) 
    for key in unique_keys: 

     values = dtable[dtable['KEY'] == key] 

     plt.figure() 

     plt.plot(index, values['VAL']) <--can fail if index is missing a date 

     plt.xlim(xmin=d1frmt,xmax=d2frmt) 
     plt.xticks(rotation=270) 
     plt.xticks(size='small') 
     plt.legend(('H20')) 
     plt.ylabel('Head (ft)') 
     plt.title('Well {0}'.format(key)) 
     fig = str('{0}.png'.format(key)) 

     out = str(outputloc) + "\\" + str(fig) 

     plt.savefig(out) 
     plt.close() 

回答

0

必須有一個日期列,或索引,在你dtable。否則,您不知道values['Val']中的哪一個屬於哪個日期。

如果這樣做,有兩種方法。

既然你讓基於密鑰的一個子集,您可以使用該子集的索引(如果它的日期時間!):

plt.plot(values.index.to_pydatetime(), values['VAL']) 

或重新索引子集到你的「目標」範圍「:

values = values.reindex(index) 
plt.plot(index.to_pydatetime(), values['VAL']) 

默認情況下,重新索引插入NaN值作爲丟失的數據。

,如果你給一個工作例如,它會更容易,它有點難以回答不知道你的數據幀是什麼樣子。

+0

oooh,這看起來很有前途。感謝您的意見和示例!是的,有一個日期時間列 - .csv數據源包括:'KEY','DATEREAD'和'VAL'。今天早上我會試一試你的建議。 – user2309282 2013-04-23 10:06:32

+0

再次感謝您的輸入RK。我能夠得到你的一些建議。事實證明,我一直遇到的許多問題是由於在將事情寫入/讀取到.csv文件時出現了一些奇怪的值格式。我的大多數問題都是通過簡單地使用DataFrames來解決問題。另外,如果我簡單地將源數據更改爲由NaN組成,那麼所有繪圖都是完美的! – user2309282 2013-04-25 02:39:21

相關問題