在pyplot中创建多个图形,但仅显示一个

时间:2018-10-31 16:36:48

标签: matplotlib

我有一个脚本,该脚本可产生许多不同的图形并将句柄保存到字典中。通常,我想绘制所有图,但是有时我只绘制一个图。

我的理解是plt.show()将显示所有情节。如果我分配了图柄(即执行fig1 = plt.figure()),然后使用fig1.show(),那应该只显示与该图柄关联的图,这似乎是合乎逻辑的。

这是MWE:

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 100)
y1 = np.random.rand(100)
y2 = np.random.rand(100)

fig1 = plt.figure()
plt.plot(x, y1, 'o')

fig2 = plt.figure()
plt.plot(x, y2, 'o')

fig1.show()

这似乎起作用,但是创建该图形后,该图形立即消失了。我的理解是fig1.show()必须处于循环中,因为类Figure.show()的方法不会像plt.show()那样调用while循环。

我意识到这类似于以下问题: How can I show figures separately in matplotlib?,但被接受的答案似乎并未解决原始问题(如评论中所指出)。

fig1.show()放在while循环中是否正确?如果是这样,您该怎么做?

2 个答案:

答案 0 :(得分:1)

您可以添加一条等待用户输入的语句,然后该图将显示,并在按下键后关闭:

fig1.show() 
raw_input()

答案 1 :(得分:1)

您可以关闭除要显示的数字以外的所有其他数字。然后调用plt.show()将仅显示尚未关闭的一个数字。

import numpy as np
import matplotlib.pyplot as plt

x = np.arange(0, 100)
y1 = np.random.rand(100)
y2 = np.random.rand(100)

fig1 = plt.figure()
plt.plot(x, y1, 'o')

fig2 = plt.figure()
plt.plot(x, y2, 'o')

def figshow(figure):
    for i in plt.get_fignums():
        if figure != plt.figure(i):
            plt.close(plt.figure(i))
    plt.show()

figshow(fig2)