Matplotlib.pyplot:打开新的数字环境

时间:2017-07-31 12:23:21

标签: python matplotlib

在pyplot中,当我运行plt.plot(x)时,它似乎在内部运行以下逻辑:

1)如果图形已经打开,请使用该图形,否则创建一个新图形 2)如果该图中的轴已经打开,请使用该轴,否则创建一个新轴 3)在该轴上绘图。

我想知道如何在下次调用一些绘图命令时强制步骤(1)打开一个新的数字。像

这样的东西
plt.plot(x1)
with new_figure_environment():  # Ensure that plot commands within this go to new figures
    some_function()
plt.show()

如果some_function包含:

def some_function():
    plt.plot(x1)

然后我想打开一个新的数字,但是如果它不包含绘图功能那么我就不会。

1 个答案:

答案 0 :(得分:0)

如果您想使用fig1 = plt.figure(1)fig2 = plt.figure(2)等在特定的数字中绘制您的数字。 要绘制特定图形中的图形,请定义轴ax1 = fig1.gca() gca =获取当前轴,而不是使用plt.plot()使用ax1.plot()绘制在图1中

import matplotlib.pyplot as plt 

x1 = [0,1]
x2 = [0,2]

y1 = [0,1]
y2 = [0,-1]

fig1 = plt.figure(1)
ax1 = fig1.gca()

fig2 = plt.figure(2)
ax2 = fig2.gca()


ax1.plot(x1,y1,'b')
ax2.plot(x2,y2,'r')

plt.show()

如果要创建5个数字,请使用列表:

fig = []
ax = []
for i in range(5) :
    fig.append(plt.figure(i))
    ax.append(fig[i].gca())

如果图1已经打开并且你想要绘制一条额外的曲线,你只需要输入这些线:

fig3 = plt.figure(1)
ax3 = fig1.gca()
ax3.plot(x1,y2,'g') 
fig3.canvas.draw()