2015-09-25 53 views
0

爲什麼我在運行此代碼時隨機連接pyplot?爲什麼pyplot(matplotlib)會隨機連接點?

def plot_date_value(single_data_frame): 
    date_axis_data = [] 
    value_axis_data = [] 
    date_ticks = [] 
    for item in single_data_frame: 
     date_axis_data.append(date2num(item[0])) 
     date_ticks.append(item[0]) 
     value_axis_data.append(item[1]) 
     print(item[0], '---------------------', item[1]) 

    fig = plt.figure() 
    graph = fig.add_subplot(111) 
    graph.plot(date_axis_data, value_axis_data, 'r-o') 
    graph.set_xticks(date_axis_data) 
    graph.set_xticklabels([date.strftime("%Y-%m-%d %H:%M") for date in date_ticks]) 
    plt.show() 

我的數據,這一功能是這樣的:

[(datetime.datetime(2011, 9, 14, 6, 0), 0.83697607), (datetime.datetime(2011, 9, 14, 8, 0), 1.010857357), (datetime.datetime(2011, 9, 14, 10, 0), 0.982353533), (datetime.datetime(2011, 9, 14, 16, 0), 0.962431422), (datetime.datetime(2011, 9, 15, 20, 0), 0.971906937), (datetime.datetime(2011, 9, 16, 2, 0), 1.000917626), (datetime.datetime(2011, 9, 17, 2, 0), 0.827756728), (datetime.datetime(2011, 9, 14, 18, 0), 0.898688627), (datetime.datetime(2011, 9, 14, 20, 0), 0.978427012), (datetime.datetime(2011, 9, 15, 18, 0), 0.822463165), (datetime.datetime(2011, 9, 16, 16, 0), 1.222488219), (datetime.datetime(2011, 9, 16, 20, 0), 0.909770116), (datetime.datetime(2011, 9, 16, 22, 0), 1.121605357)] 

它吐出來的是圖是這樣的:

enter image description here

這究竟是爲什麼?任何幫助將不勝感激。

+0

你能不能也爲'date2num()'的代碼? – ballsatballsdotballs

+0

date2num是matplotlib內置的將日期轉換爲數字。 –

回答

4

它按給定順序連接點。你的日期沒有排序。

嘗試改變for環路:

for item in sorted(single_data_frame): 
+0

謝謝!它做到了。但我一直認爲這一點的順序並不重要。文件中沒有提到關於點的順序。 –