我有一个脚本,该脚本可产生许多不同的图形并将句柄保存到字典中。通常,我想绘制所有图,但是有时我只绘制一个图。
我的理解是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循环中是否正确?如果是这样,您该怎么做?
答案 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)