簡體   English   中英

使用 matplotlib 繪制兩個不同大小的數組

[英]Plotting two different sized arrays with matplotlib

我想使用 matplotlib 來繪制我的數據。 我想在同一張圖上繪制 4 個不同的 y 值,以便我可以比較這 4 個。目前,我的“x”數據是一個大小為 10 的數組:

x: [1,2,3,4,5,6,7,8]

我的 y 數據有 3 個值,是:

y: [[0.6, 0.3, 0.4], [0.2, 0.5, 0.4], [0.6, 0.3, 0.4], .... etc.]

每個嵌套數組對應於該 x 值。 因此,對於 x=1,不同的 y 值為 0.6、0.3、0.4。

我怎樣才能把這些都畫在一張圖上?

謝謝。

您可以在繪圖前將列表 (y) 列表轉換為更合適的格式,並使用 for 循環在同一圖形中繪圖。

試試這個例子(是基本的):

def plotting(y):
    new_y = [ [sublist[i] for sublist in y] for i in range(len(y[0])) ]

    fig, axes = plt.subplots(1,1)
    for sublist in new_y:
        x = np.arange(0, len(sublist))
        axes.plot(x, sublist)

    return fig, axes

請注意,該方法的第一行創建了一個新的 y 列表。

# use
fig, ax = plotting(y)

使用zip函數轉置y ,提取大小等於x數組。 例如,

y1,y2,y3=list(zip(*y))

然后分別繪制 y1、y2 和 y3。

你可以只做一個 for 循環:

for col in np.array(y).T:
    plt.plot(x, col)

在示例數據上運行:

x = [1,2,3,4,5,6,7,8]
y = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9, 10, 11],
     [12, 13, 14], [15, 16, 17], [18, 19, 20], [21, 22, 23]
    ]

輸出:

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM