2015-10-14 60 views
0

(對不起,我的標題不是很大!)Matplotlib:(自動化)1個次要情節繪製未知數量的數據源/線/情節

好了,所以我想自動化的我繪製代碼之一。我認爲這是更好的董事會使用(而不是代碼審查),因爲它是一個具體目標的問題,而不是通常的改進。如果我在對我的評估中誤認爲道歉。

爲此,我需要能夠繪製未知數量的不同數據源(究竟會形成對劇情線);全部在同一個子圖內。我必須找到的東西是爲每個數據源創建一個新的子圖,這不是我所追求的。因爲如果我說的有3個數據源

示例代碼:

import matplotlib.pyplot as plt 

data_y1 = [1, 2, 3, 4, 5] 
data_x1 = [1, 1.5, 2, 2.5, 3] 

data_y2 = [1, 2, 3, 4, 5, 6, 2] 
data_x2 = [1, 2, 3, 4, 6, 9, 10] 

data_y3 = [1, 3, 5, 7] 
data_x3 = [1, 4, 9, 16] 

fig1 = plt.figure() 
ax1 = fig1.add_subplot(111) 

a1, = ax1.plot(data_x1, data_y1, label="Data 1", color='g') 
a2, = ax1.plot(data_x2, data_y2, label="Data 2", color='r') 
a3, = ax1.plot(data_x3, data_y3, label="Data 3", color='c') 

ax1.set_xlabel("Number of Hellos", fontsize=15) 
ax1.set_ylabel("Number of Worlds", fontsize=18) 

fig1.legend((a1, a2, a3), ("Data 1", "Data 2", "Data 3"), loc='lower center', fancybox=True, ncol=3, fontsize=20) 

mng = plt.get_current_fig_manager() 
mng.window.showMaximized() 

plt.show() 

使作品。然而,我的問題是,我不知道我會有多少數據源。它可能是10(例如data_y10等),或者它可能只是一個。所以我不能說(a1,a2,a3)我正在努力實現這個自動化。我一直在嘗試使用字典,但他們似乎弄亂了傳說。

任何意見將不勝感激。

回答

3

假設你把所有的數據列表的列表:

#!/usr/bin/env python3 

import matplotlib.pyplot as plt 
from itertools import cycle 

def main(): 

    colors = cycle(["aqua", "black", "blue", "fuchsia", "gray", "green", "lime", "maroon", "navy", "olive", "purple", "red", "silver", "teal", "yellow"]) 

    data = [ 
     [ 
      [1, 2, 3, 4, 5], 
      [1, 1.5, 2, 2.5, 3] 
     ], 
     [ 
      [1, 2, 3, 4, 5, 6, 2], 
      [1, 2, 3, 4, 6, 9, 10] 
     ], 
     [ 
      [1, 3, 5, 7], 
      [1, 4, 9, 16] 
     ] 
    ] 

    fig = plt.figure() 
    ax = fig.add_subplot(111) 

    for i, item in enumerate(data): 
     ax.plot(item[0], item[1], label="Data " + str(i), color=next(colors)) 

    ax.set_xlabel("Number of Hellos", fontsize=15) 
    ax.set_ylabel("Number of Worlds", fontsize=18) 

    ax.legend(loc="best") 

    ax.margins(0.1) 
    fig.tight_layout() 

    plt.savefig("mwe.png") 

if __name__ == "__main__": 
    main() 

enter image description here

+0

不明白爲什麼我無法將數據存儲在一個列表的列表!將嘗試在一瞬間實現這一點,並接受答案,如果它的作品(不能看不到它)。謝謝您的幫助! – Steve

+0

現貨,正是我正在尋找它。太感謝了! – Steve