【问题标题】:Subplots in forloop do not appear in Pythonfor 循环中的子图不会出现在 Python 中
【发布时间】:2019-11-18 10:48:19
【问题描述】:

在下面的代码中,很明显我们有子图。第一个 for 循环制作 8 个图或 4 个带有 2 个子图的图 (4 *2 = 8)。但问题是在此代码中显示了第一个图,而其他图则没有出现。我应该怎么做才能看到for x in range(len(ng))的所有情节。

fig, (ax1,ax2) = plt.subplots(1,2)
for x in range(len(ng)):
    for xx in range(1,819):
            Ju_list=[]
            ET_list=[]
            ET1_list=[]
            Unu_list=[]
            z_list=[]
            uf_list=[]
            for z in np.arange(1,7):
                    Ju = dfimppara.iloc[xx, 1]
                    Jl = dfimppara.iloc[xx, 2]
                    lim = Ju - Jl
                    if lim > 1:
                        pass
                    else:
                        if Ju<7:
                            Ju_list.append(dfimppara.iloc[xx, 1])
                            ET_list.append(ET(xx, z, ng[x], 1e-24, Tg[x], 1)/(2.73*(1+z)))
                            ET1_list.append(ET(xx, z, ng[x], 1e-20,Tg[x], 1)/(2.73*(1+z)))))
                            z_list.append(z)

                            ax1.plot(z_list, ET_list)#,label="test1")
                            ax1.title.set_text(f'Fig1:Tg={Tg[x]}')
                            ax2.plot(z_list, ET1_list)
                            ax2.title.set_text(f'Fig1:Tg={Tg[x]}')

                            #ax1.plot(Ju_list, Unu_list)

                        else:
                            pass


    plt.show()

【问题讨论】:

  • 将 plt.show() 移到两个 for 循环之外
  • @Sheldore 不!我们应该有 8 个地块,这样我们就可以将所有地块合二为一。我们应该在第一个 for 循环中包含所有可能的迭代图 x

标签: python matplotlib subplot


【解决方案1】:

您在开始时只使用fig, (ax1,ax2) = plt.subplots(1,2) 创建一个图形。我认为您要做的是创建len(ng) 数字:

for x in range(len(ng)):
    fig, (ax1,ax2) = plt.subplots(1,2)
    for xx in range(1,819):
            Ju_list=[]
            ET_list=[]
            ET1_list=[]
            Unu_list=[]
            z_list=[]
            uf_list=[]
            for z in np.arange(1,7):
                    Ju = dfimppara.iloc[xx, 1]
                    Jl = dfimppara.iloc[xx, 2]
                    lim = Ju - Jl
                    if lim > 1:
                        pass
                    else:
                        if Ju<7:
                            Ju_list.append(dfimppara.iloc[xx, 1])
                            ET_list.append(ET(xx, z, ng[x], 1e-24, Tg[x], 1)/(2.73*(1+z)))
                            ET1_list.append(ET(xx, z, ng[x], 1e-20,Tg[x], 1)/(2.73*(1+z)))))
                            z_list.append(z)

                            ax1.plot(z_list, ET_list)#,label="test1")
                            ax1.title.set_text(f'Fig1:Tg={Tg[x]}')
                            ax2.plot(z_list, ET1_list)
                            ax2.title.set_text(f'Fig1:Tg={Tg[x]}')

                            #ax1.plot(Ju_list, Unu_list)

                        else:
                            pass


    plt.show()

【讨论】:

  • 当然,我想我在 Scuola Normale Superior di Pisa 见过你。也许
  • 可能是,但我只去过几次
猜你喜欢
  • 2019-05-13
  • 1970-01-01
  • 2019-09-04
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-25
  • 1970-01-01
相关资源
最近更新 更多