matplotlib 无法显示多个交互式绘图窗口

r3i60tvu  于 2023-10-24  发布在  其他
关注(0)|答案(1)|浏览(160)

最近,当我尝试生成多个图时,matplotlib出现了问题。当执行如下脚本时,只显示第一个图。

import matplotlib.pyplot as plt
plt.plot()
plt.title('1')
plt.show()

plt.plot()
plt.title('2')
plt.show()

即使关闭了第一个图的窗口,第二个图也不会显示。如果我在两种情况下都在plt.show()之前添加plt.savefig(),它实际上会正确地保存图,只是不会显示它们。
我在一个交互式python会话中运行matplotlib时遇到了类似的问题。在执行plt.show()之后,它显示了图,但是当关闭图时,python会话崩溃,没有错误:

>>> import matplotlib.pyplot as plt
>>> plt.plot()
[]
>>> plt.show()
>>> %
Desktop %

线>>> %在关闭绘图后自动出现,然后会话立即中断。
我尝试过从不同的Python解释器运行,重新安装matplotlib,创建新的环境,但这些解决方案都不起作用。
有没有人知道是什么原因造成的,以及如何解决这个问题?

ulydmbyx

ulydmbyx1#

你有两个问题。
1.当调用plt.show()时,matplotlib将显示到该点为止创建的所有图形并暂停程序。因为您当时只创建了一个图形,所以它只显示那一个。要解决这个问题,只需在绘图部分结束时调用plt.show()一次。
1.当你调用plt.plot()时,如果一个图不存在,它会创建一个图,如果一个图存在,它会使用前一个图。因为你没有在两次调用之间创建一个新的图,所以它们会使用同一个图。这样做的结果是plt.title("2")将被放在第一个图上,保留原来的标题。相反,你需要在每次plotting调用之前调用plt.figure()来为它们中的每一个创建新的图形。

import matplotlib.pyplot as plt

plt.figure()
plt.plot()
plt.title("1")

plt.figure()
plt.plot()
plt.title("2")
plt.show()

相关问题