我的PyCharm和matplotlib有一个问题,我似乎无法纠正。
当我使用PyCharm和ipython作为解释命令的控制台时,在我保存该图之前,图不会显示。但是,当我尝试从外部PyCharm进行绘图时,不会发生这种情况。
这是一个示例过程,在PyCharm中失败:
In[2]: import matplotlib.pyplot as plt
Backend MacOSX is interactive backend. Turning interactive mode on.
In[3]: plt.plot([1,2,3,4],[1,4,9,16], 'ro')
此将打开带有标签“图1”的窗口。但是,没有显示任何图,将鼠标悬停在SPOD上时,鼠标会切换到SPOD(我在Mac上)。此时,我可以尝试
In[4]: plt.show()
但仍然没有情节出现。 但是,如果我这样做:
In[5]: plt.savefig('foo.png')
不仅会用该名称保存图形,图形也会显示在“图形1”窗口中。请注意,PyCharm已将交互模式设置为on,并且它已经认识到我的后端是(应该是)MacOS。
我在通用终端 session 中甚至通过emacs都通过python和ipython控制台使用了相同的过程,并且在所有情况下,该图在调用
plt.plot()
行时出现。无需plt.show()
调用。实际上,我什至可以通过PyCharm使用终端并获得所需的绘图。一个答案是我应该只使用这些方法进行绘图,而忽略PyCharm。但是,假设我发现PyCharm的“风吹草动”足够吸引人,以至于我真的很想将其用作IDE,但是希望能够检查图而不必经历
plt.savefig()
麻烦(因为我没有不想保留我尝试的所有情节)。我也尝试过通过
plt.switch_backend()
切换后端。我尝试了列出的所有选项,但所有这些选项均失败,其原因主要与未安装某些软件包或安装在错误的系统上有关。我让而不是尝试安装任何东西以使用新的后端,所以我不知道是否有另一个正确安装的后端可以解决此问题。当然乐意尝试!系统细节:
MacBookPro Retina 2012年中,16GB内存,优胜美地10.10
Python 3.4.2
ipython 2.3.1
PyCharm社区版4.0.4
请注意,我已经审查并尝试了以下问题的解决方案变体:
Python plots won't open
How to switch backends in matlab/python
PyCharm + Matplotlib?
Matplotlib figure stucked (grey window)
matplotlib does not show my drawings although I call pyplot.show()
编辑
如以下评论中所述,这似乎是bug,不是我的设置失败。因此,我正在修改此问题,以询问是否存在已知的解决方法。
最佳答案
在OS X下,PyCharm(包括最新的v5版本)存在一个已知问题,该问题是由在OS X上安装Python的方式引起的。
大多数人确实使用brew
安装了Python 2和3,这也替换了命令行中要使用的默认Python解释器。尽管如此,默认解释器和pip
可执行文件也没有被GUI应用程序取代。
如果您想要更具体的答案,则必须使用以下方法正确记录您的环境:
which -a python
which -a pip
print(sys.path)
和print(os.env)
,并进行比较。 通过这样做,您可能会意识到加载了错误版本的模块。
关于python - PyCharm无法正确打开matplotlib图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28646167/