【问题标题】:Matplotlib plot only makes final plot in loopMatplotlib 图只在循环中制作最终图
【发布时间】:2018-08-02 22:22:29
【问题描述】:

在我的代码中,我有多个要自动化的绘图,我使用 for 循环运行代码并为每个循环创建 1 个绘图。然而,代码似乎只创建了最终的情节。如果我在循环中调用该函数,这似乎可行,但我不明白为什么它不会像我在这里那样创建所有图。

for i in range(num_x):
        curr = usehdr[xcols[i]]

        for j in range(num_y):
            domain = data[:,xcols[i] - 1]
            image  = data[:,ycols[j] - 1]
            plt.plot(domain,image,'.', color = 'black')
            plt.xlabel(curr + ' NN distances (Mpc)')
            plt.ylabel(usehdr[ycols[j]])
            plt.title('D4000_N vs NN distances')

i 变量是 x 数据集发生变化的图的数量 j 变量是 y 数据集发生变化的图的数量。通常 i 从 0 到 9(含)而 j 只执行一次。

【问题讨论】:

    标签: python python-3.x matplotlib


    【解决方案1】:

    我修复了它,发现它与 MATLAB 非常相似,我需要实现 subplot 以保留我的其他图。现在这段代码可以工作了:

    for i in range(num_x):
            curr = usehdr[xcols[i]]
    
            for j in range(num_y):
                domain = data[:,xcols[i] - 1]
                image  = data[:,ycols[j] - 1]
                plt.subplot(num_x,num_y,i+1)
                plt.plot(domain,image,'.', color = 'black')
                plt.xlabel(curr + ' NN distances (Mpc)')
                plt.ylabel(usehdr[ycols[j]])
                plt.title('D4000_N vs NN distances')
    

    或者,使用 plt.show() 绘制几个单独的图。

    for i in range(num_x):
        curr = usehdr[xcols[i]]
    
        for j in range(num_y):
            domain = data[:,xcols[i] - 1]
            image  = data[:,ycols[j] - 1]
            plt.plot(domain,image,'.', color = 'black')
            plt.xlabel(curr + ' NN distances (Mpc)')
            plt.ylabel(usehdr[ycols[j]])
            plt.title('D4000_N vs NN distances')
            plt.show()
    

    【讨论】:

    • 或者如果你想要几个单独的图,代码也可以在循环中使用 plt.show()。
    猜你喜欢
    • 2021-05-23
    • 1970-01-01
    • 2020-02-09
    • 2021-06-10
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多