簡體   English   中英

子圖通過 python 中 arrays 的字典與 matplotlib 進行迭代

[英]Subplots via iteration through a dictionary of arrays in python with matplotlib

我有一本 arrays 字典(40 個條目,每個數組的形狀 = (5001,)),我希望能夠迭代並在 5 * 8 網格中創建子圖。 到目前為止,我只能弄清楚如何制作一個 40*1 的網格:

fig, axes = plt.subplots(40,sharex=True,sharey=True,figsize=(3,30))
for i, (key, value) in enumerate(new_dict.items()):
    print(i, key, value)
    axes[i].plot(value)
    axes[i].set(title=key.upper(), xlabel='ns')
plt.show()

40*1格

像這樣的東西會將最后一個 plot 放在 5*8 網格的每個圖中:

fig, axes = plt.subplots(ncols=5,nrows=8,sharex=True,sharey=True,figsize=(10,30))
axes = axes.flatten()
for i, ax in enumerate(axes.flatten()):
    for a, (key, value) in enumerate(new_dict.items()):
        print(a, key, value)
    ax.plot(value)
    ax.set(title=key.upper(), xlabel='ns')
plt.show()

每個圖中的單個(最終)plot

並切換 for 循環將所有圖疊加在 5*8 網格的每個圖中:

fig, axes = plt.subplots(ncols=5,nrows=8,sharex=True,sharey=True,figsize=(10,30))
for i, ax in enumerate(axes.flatten()):
    for a, (key, value) in enumerate(new_dict.items()):   
        print(a, key, value)
        ax.plot(value)
        ax.set(title=key.upper(), xlabel='ns')
plt.show()

每個圖中的所有圖

我一生都無法弄清楚如何在每個圖表中放置不同的 plot。 任何幫助將不勝感激。 我覺得我在這里遺漏了一些非常明顯的東西:非常感謝:-)

編輯:我已經意識到 for 循環的 position 無關緊要,它是 ax.plot...

您可以創建一個給定大小的子圖網格:

# sample data
new_dict = {str(i): np.linspace(0,1,100)**i for i in range(40)}

fig, axes = plt.subplots(5,8,sharex=True,sharey=True,figsize=(8,5))

#flatten axes so you can access axes[i]
axes = axes.ravel()

for i, (key, value) in enumerate(new_dict.items()):
    print(i, key, value)
    axes[i].plot(value)
    axes[i].set(title=key.upper(), xlabel='ns')
plt.show()

你會得到這樣的東西:

在此處輸入圖像描述

暫無
暫無

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

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