最近,当我尝试生成多个图时,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,创建新的环境,但这些解决方案都不起作用。
有没有人知道是什么原因造成的,以及如何解决这个问题?
1条答案
按热度按时间ulydmbyx1#
你有两个问题。
1.当调用
plt.show()
时,matplotlib将显示到该点为止创建的所有图形并暂停程序。因为您当时只创建了一个图形,所以它只显示那一个。要解决这个问题,只需在绘图部分结束时调用plt.show()
一次。1.当你调用
plt.plot()
时,如果一个图不存在,它会创建一个图,如果一个图存在,它会使用前一个图。因为你没有在两次调用之间创建一个新的图,所以它们会使用同一个图。这样做的结果是plt.title("2")
将被放在第一个图上,保留原来的标题。相反,你需要在每次plotting调用之前调用plt.figure()
来为它们中的每一个创建新的图形。