2014-02-08 32 views
-4

我想繪製字母表中每個字母的圖形(測試僅爲2)。我從plot_letter函數返回的數據是('LETTER',[年數範圍],[數據值每年一個])。最後我的for循環調用函數,檢索數據併爲每個創建單獨的圖。我會如何將所有圖表放在一個圖上?在單個繪圖上繪製多個圖形

import csv 
import matplotlib.pyplot as plt 

start = 1880 
stop = 1999 
years = range(start, stop+1) 
alphabet=['A','C']#,'D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'] 

def plot_letter(i): 
year_values = [] 
for year in years: 
    filename = 'yob' + str(year) + '.txt' 
    z = open(filename)  
    c = 0 
    d = 0 
    for line in z: 
     y = line.strip().split(',') 
     y.remove(y[1]) 
     c += int(y[1]) 
     if i in y[0]: 
      d += int(y[1]) 
    year_values.append(float(d)/float(c))   
return i,years, year_values 

for i in alphabet: 
    data = zip(plot_letter(i)[1], plot_letter(i)[2]) 
    x_val = [x[0] for x in data] 
    y_val = [x[1] for x in data] 
    plt.plot(x_val, y_val) 
    plt.show() 
+0

你想多次要情節或在同一軸上所有的情節? – M4rtini

+0

無論採用哪種方式,都可以在[在一起繪製多組數據]和[子繪圖]下找到兩種解決方案[此處](http://nbviewer.ipython.org/github/swcarpentry/notebooks/blob/master/matplotlib.ipynb) – M4rtini

+0

我看過ipython,但我的問題依然存在。 for循環只允許我一次創建一個情節。我想在同一個圖上製作多個圖,而不是子圖 – cubedNnoobed

回答

0

這段代碼:

for i in alphabet: 
    data = zip(plot_letter(i)[1], plot_letter(i)[2]) 
    x_val = [x[0] for x in data] 
    y_val = [x[1] for x in data] 
    plt.plot(x_val, y_val) 
    plt.show() 

呼叫show()多次。

如果你想一個情節有多條線路,只需將它移出循環:

for i in alphabet: 
    data = zip(plot_letter(i)[1], plot_letter(i)[2]) 
    x_val = [x[0] for x in data] 
    y_val = [x[1] for x in data] 
    plt.plot(x_val, y_val) 
plt.show()