2013-10-04 9 views
11

我有一組數據,我使用熊貓數據框加載到python中。我想要做的是創建一個循環,它將爲自己的框架中的所有元素打印一個情節,而不是一個一個。我的數據是在以這種方式構建Excel文件:使用循環繪製n個圖表Python

Index | DATE | AMB CO 1 | AMB CO 2 |...|AMB CO_n | TOTAL 
1  | 1/1/12| 14  | 33  |...| 236 | 1600 
.  | ... | ...  | ...  |...| ... | ... 
.  | ... | ...  | ...  |...| ... | ... 
.  | ... | ...  | ...  |...| ... | ... 
n 

這就是我對到目前爲止的代碼:

import pandas as pd 
import matplotlib.pyplot as plt 
ambdf = pd.read_excel('Ambulance.xlsx', 
         sheetname='Sheet2', index_col=0, na_values=['NA']) 
print type(ambdf) 
print ambdf 
print ambdf['EAS'] 

amb_plot = plt.plot(ambdf['EAS'], linewidth=2) 
plt.title('EAS Ambulance Numbers') 
plt.xlabel('Month') 
plt.ylabel('Count of Deliveries') 
print amb_plot 

for i in ambdf: 
    print plt.plot(ambdf[i], linewidth = 2) 

我想到做這樣的:

for i in ambdf: 
    ambdf_plot = plt.plot(ambdf, linewidth = 2) 

以上並不是我想要的東西,它源於我對Pandas,MatplotLib等的陌生感,看着一些文檔,雖然對我來說它看起來並不需要matplotlib(問題2)

所以A)我如何爲我的df 中的每一列產生一個數據圖,B)我是否需要使用matplotlib或者我應該只使用熊貓來完成這一切?

謝謝

+0

你可能只是額外的系列地繪製每一列的繪圖或爲每一列創建一個單獨的繪圖。我猜你喜歡後者?另外,'matplotlib'是製作情節的一個非常標準的模塊,非常容易使用,並且像夢一樣運作。 –

+1

這真的沒關係,這只是讓我使用它並且實踐它,會議是否規定了一種方法? –

回答

18

好了,創建若干地塊最簡單的方法是這樣的:

import matplotlib.pyplot as plt 
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
y=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
for i in range(len(x)): 
    plt.figure() 
    plt.plot(x[i],y[i]) 

請注意,您需要創建一個figure每次或pyplot將創建的第一個繪製。

如果你想創建多個數據系列所有你需要做的是:

import matplotlib.pyplot as plt 
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
y=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[7,8,9,10]] 
plt.plot(x[0],y[0],'r',x[1],y[1],'g',x[2],y[2],'b',x[3],y[3],'k') 

你可以通過具有像['r','g','b','k']顏色列表,然後就在此列表中調用這兩個項目和相應的數據自動執行它如果你願意,可以在循環中進行繪製。如果你只是想數據系列編程方式添加到一個情節是這樣的會做(沒有新的數字每次創建使一切都在同一圖中繪製):

import matplotlib.pyplot as plt 
x=[[1,2,3,4],[1,2,3,4],[1,2,3,4],[1,2,3,4]] 
y=[[1,2,3,4],[2,3,4,5],[3,4,5,6],[7,8,9,10]] 
colours=['r','g','b','k'] 
for i in range(len(x)): 
    plt.plot(x[i],y[i],colours[i]) 

希望這有助於。如果有任何matplotlib有一個非常好的documentation page與大量的examples

+0

感謝您的幫助 –

+0

奇怪的是,雖然我不得不寫plt.pyplot.plot怪異 –

+0

這很奇怪,idk爲什麼。我在發佈之前測試我的代碼,對我來說它的工作原樣。 –

0

使用字典!

您還可以使用詞典,可以讓你有過地塊更多的控制:

import matplotlib.pyplot as plt 
# plot 0  plot 1 plot 2 plot 3 
x=[[1,2,3,4],[1,4,3,4],[1,2,3,4],[9,8,7,4]] 
y=[[3,2,3,4],[3,6,3,4],[6,7,8,9],[3,2,2,4]] 

plots = zip(x,y) 
def loop_plot(plots): 
    figs={} 
    axs={} 
    for idx,plot in enumerate(plots): 
     figs[idx]=plt.figure() 
     axs[idx]=figs[idx].add_subplot(111) 
     axs[idx].plot(plot[0],plot[1]) 
return figs, axs 

figs, axs = loop_plot(plots) 

現在,你可以選擇你想輕鬆地修改情節:

axs[0].set_title("Now I can control it!")