【问题标题】:Subplots via iteration through a dictionary of arrays in python with matplotlib使用matplotlib通过python中的数组字典迭代子图
【发布时间】:2020-05-14 22:01:07
【问题描述】:

我有一个数组字典(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 grid

这样的东西会将最后一个图放在 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()

Single (final) plot in each graph

并切换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()

All plots in each graph

我一生都无法弄清楚如何在每个图表中放置不同的图。任何帮助将不胜感激!我觉得我在这里遗漏了一些非常明显的东西。非常感谢:-)

编辑:我已经意识到 for 循环的位置无关紧要,它是 ax.plot 的制表符...改变了最后一个图是填充图还是所有图。

【问题讨论】:

    标签: python matplotlib data-science


    【解决方案1】:

    您可以创建一个给定大小的子图网格:

    # 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()
    

    你会得到这样的东西:

    【讨论】:

    • 行得通!谢谢!!!我知道它必须与斧头有关。太棒了:-D
    猜你喜欢
    • 1970-01-01
    • 2016-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-21
    • 2016-09-29
    • 2018-07-30
    相关资源
    最近更新 更多