【问题标题】:Pycharm matplotlib open even without show()Pycharm matplotlib 即使没有 show() 也会打开
【发布时间】:2018-01-12 23:00:00
【问题描述】:

我最近切换到 pycharm 作为我的主要 python 开发环境,总的来说,我对它的工作方式非常满意。但是我遇到了一些问题。首先,我发现运行脚本非常慢,更不用说如果我使用 matplotlib 显示绘图,那么与简单地使用 IDLE 相比,交互式绘图非常慢。

我想通过不实际显示情节来解决这个问题,而只是保存图形。然而,似乎即使我没有明确调用在后台调用的 show() 然后再次关闭。知道发生了什么吗?

我的代码:

# plot exchange rate over the years
fig, ax = plt.subplots(1, 1, figsize=(12,9))
ax.plot(years, data, color=c[0])

# set figure properties
ax.set_title('Rate')
ax.set_xlim([min(years), max(years)])
ax.set_ylabel('Rate per x')
ax.set_xlabel('Source: '+source, horizontalalignment='right', x=1.0, fontsize=9)
ax.xaxis.set_ticks(years[::2])
fig.savefig('rate.png', dpi=144, bbox_inches='tight')
plt.close(fig)

我的pycharm安装详情:

PyCharm 2017.3.2 (Community Edition)
Build #PC-173.4127.16, built on December 18, 2017
JRE: 1.8.0_152-release-1024-b8 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Windows 7 6.1

知道如何至少关闭交互式 gui 的打开以进行绘图(即使我没有调用 show())?这已经很有帮助了。如果有办法让这一切变得更快,那就更好了。

【问题讨论】:

  • 您是否处于交互模式?如果是这样,plt.ioff()?
  • 我无法在 Pycharm 2017.1.1 中重现这一点。在没有plt.show() 的情况下运行某些代码时,不会产生任何窗口,正如预期的那样。
  • @DavidG 解决了这个问题。请回复,以便我将其标记为正确答案。

标签: python matplotlib pycharm


【解决方案1】:

您的 matplotib 可能正在使用交互式后端。这意味着默认情况下将启用交互模式。

因此,一旦您绘制任何内容,图形窗口就会打开,您的脚本将继续执行接下来的操作。到达脚本末尾时,窗口将关闭。如果您的图形的绘图位于脚本的末尾,则窗口将显示为打开然后立即关闭。您可以通过将input() 放在脚本的最后来测试这一点,并且窗口应该保持打开状态。

为了解决这个问题,您可以使用

关闭交互模式
plt.ioff()

在这种情况下,调用(或不调用)plt.show() 将按预期工作。

【讨论】:

    猜你喜欢
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-14
    • 2016-08-15
    • 2019-04-20
    • 1970-01-01
    相关资源
    最近更新 更多