matplotlib show()方法不打开窗口

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

我正在使用Mac,当我使用matplotlib执行以下操作时:

  1. import matplotlib.pyplot as plt
  2. import matplotlib.mlab as mlab
  3. import pylab as P
  4. ...
  5. plt.plot(x,y)
  6. plt.show() <-- nothing happens
  7. plt.savefig('figure.png') <-- works fine

因此,plt.show不打开窗口或任何东西,而plt.savefig工作正常。
会有什么问题呢?

olhwl3o2

olhwl3o21#

Pyplot仅在以下情况下才会弹出图形窗口:

  1. matplotlib.rcParams['interactive'] == True

如果您:

  • 以前在脚本中调用过plt.ion(),或者
  • 等价地,称为matplotlib.interactive(True),或
  • 在命令行中使用--pylab选项启动了一个ipython会话。

当关闭交互模式时,通常需要显式调用plt.show()来弹出图形窗口。这是因为我们经常需要多次调用plot来绘制各种东西 * 然后 * 显示图形(这是一个阻塞调用)。

  • 编辑(问题修改后)*:

plt.show()没有弹出图形窗口的一个原因是你没有激活一个交互式后端。检查plt.get_backend()的输出-如果它返回'agg',例如,你有一个非交互式后端。
如果这是你的问题,你可以添加像这样的行

  1. import matplotlib
  2. matplotlib.use('MacOSX')

在脚本的开头指定后端。这需要放在任何其他matplotlib相关导入之前。
要使这样的更改永久化,您可以通过修改matplotlib rcfile来指定不同的后端作为默认值。该文件的位置通过调用matplotlib.matplotlib_fname()找到。

展开查看全部
cnwbcb6i

cnwbcb6i2#

对于我来说,我有这样的代码:

  1. from matplotlib import pyplot as plt
  2. figure = plt.Figure()
  3. axes = figure.add_subplot()
  4. axes.plot([1,2], [1,2])
  5. plt.show()

plt.show()没有阻止或做任何事情。如果我将代码改为这样,那么它就可以工作了:

  1. figure = plt.Figure()
  2. plt.plot([1,2], [1,2])
  3. plt.show()

我的问题是,我有多个图显示在一个子图,所以我需要轴。这是修复:

  1. figure, axes = plt.subplots()
  2. axes.plot([1,2], [1,2])
  3. plt.show()
展开查看全部

相关问题