首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >matplotlib show()方法无法打开窗口

matplotlib show()方法无法打开窗口
EN

Stack Overflow用户
提问于 2014-02-18 01:44:09
回答 2查看 32.9K关注 0票数 12

我使用的是mac,当我使用matplotlib执行以下操作时:

代码语言:javascript
运行
复制
import matplotlib.pyplot as plt
import matplotlib.mlab as mlab
import pylab as P

...
plt.plot(x,y)  
plt.show() <-- nothing happens
plt.savefig('figure.png') <-- works fine

因此,在plt.savefig正常工作时,plt.show不会打开窗口或其他任何东西。

可能的问题是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-18 02:02:41

只有在以下情况下,Pyplot才会弹出图形窗口

代码语言:javascript
运行
复制
matplotlib.rcParams['interactive'] == True

在以下情况下会出现这种情况:

  • 之前在脚本中调用了plt.ion()plt.ion()称为matplotlib.interactive(True),或
  • 在命令行中使用--pylab选项启动了ipython会话。

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

编辑(修改问题后):

plt.show()没有弹出图形窗口的一个原因是你没有激活一个交互式的后端。检查plt.get_backend()的输出-如果它返回'agg',例如,您有一个非交互式后端。

如果这是您的问题,您可以添加像这样的行

代码语言:javascript
运行
复制
import matplotlib
matplotlib.use('MacOSX')

在脚本的开头指定后端。这需要放在任何其他matplotlib相关的导入之前。

要使这样的更改永久生效,您可以通过修改matplotlib by文件来指定一个不同的后端作为默认。通过调用matplotlib.matplotlib_fname()可以找到该文件的位置。

票数 17
EN

Stack Overflow用户

发布于 2022-01-24 16:29:56

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

代码语言:javascript
运行
复制
from matplotlib import pyplot as plt
figure = plt.Figure()
axes = figure.add_subplot()
axes.plot([1,2], [1,2])
plt.show()

plt.show()没有阻塞或者做任何事情。如果我把代码改成这样,它就能工作了:

代码语言:javascript
运行
复制
figure = plt.Figure()
plt.plot([1,2], [1,2])
plt.show()

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

代码语言:javascript
运行
复制
figure, axes = plt.subplots()
axes.plot([1,2], [1,2])
plt.show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21835847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档