首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在for循环的子图中只使用一次图例?

如何在for循环的子图中只使用一次图例?
EN

Stack Overflow用户
提问于 2022-10-10 22:46:26
回答 1查看 51关注 0票数 -1

我正在使用一个for循环,并试图找出如何使用图例一次,无论是在上面或下面的子图。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

plot_loc = 1
total_t = 0.1
dt = [1e-4, 1e-3, 1.5e-3] 
for n in dt:
#
#
#
    t, y_explicit = explicit_euler(total_t, n)
    t, y_implicit = implicit_euler(total_t, n)
    y_analytical = analytical(total_t,n)

    plt.subplot(3,1,plot_loc)
    plt.plot(t, y_explicit, color = 'blue')
    plt.plot(t, y_implicit, color = 'black')
    plt.plot(t,y_analytical,linestyle='dashed',color = 'orange')    
    plt.legend(['Explicit','Implicit','Analytical'])
    plot_loc+=1

plt.tight_layout(pad=1.0)
plt.show()

如果您只想在最后一个子图上使用图例,那么只需将plt.legend移出循环。

在这种情况下,它将它绘制在第三个子图中(请参见下面的结果),这是我不需要的。我要它要么在第一个子图,下面的情节或在标题。

EN

回答 1

Stack Overflow用户

发布于 2022-10-11 02:51:49

正如Mikael所建议的,您应该首先将图例代码行移到for循环之外。然后,使用bbox_to_anchor()设置图例的位置。

当您使用plt.plot()绘制每个子图时,一旦您完成了循环,所引用的图将是最后一个。因此,坐标将相对于最后一个子图。我用-0.25来设置高度,使图低于最后一个子图。一定要调整这个,以确保传奇出现在你想要的地方。

另外,请注意,您可以使用ncols=3在3列中显示图例,以使情节看起来更好。如果它不适合你的要求,你可以把它移除。下面给出了更新的代码(带有随机数据)和图例行。希望这就是你要找的..。

代码语言:javascript
复制
import matplotlib.pyplot as plt
import numpy as np

plot_loc = 1
total_t = 0.1
dt = [1e-4, 1e-3, 1.5e-3] 

t=np.linspace(0,0.1,101)

for n in dt:
#    t, y_explicit = explicit_euler(total_t, n)
#    t, y_implicit = implicit_euler(total_t, n)
#    y_analytical = analytical(total_t,n)
    y_explicit = np.random.uniform(low=-0.001, high=0, size=(101,))
    y_implicit = np.random.uniform(low=-0.001, high=0, size=(101,))
    y_analytical = np.random.uniform(low=-0.001, high=0, size=(101,))
    
    plt.subplot(3,1,plot_loc)
    plt.plot(t, y_explicit, color = 'blue')
    plt.plot(t, y_implicit, color = 'black')
    plt.plot(t,y_analytical,linestyle='dashed',color = 'orange')    
    plot_loc+=1

plt.legend(['Explicit','Implicit','Analytical'], bbox_to_anchor=(0.85, -0.25), ncol=3)

plt.tight_layout(pad=1.0)
plt.show()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74021364

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档