Pycharm matplotlib即使没有show()也可以打开

时间:2018-01-12 14:05:38

标签: python matplotlib pycharm

我最近切换到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())?这已经有很大帮助了。如果有办法让它更快,甚至更好。

1 个答案:

答案 0 :(得分:1)

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

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

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

关闭交互模式
plt.ioff()

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