我的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
  • 从PyCharm和控制台内部执行print(sys.path)print(os.env),并进行比较。

  • 通过这样做,您可能会意识到加载了错误版本的模块。

    关于python - PyCharm无法正确打开matplotlib图,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28646167/

    10-10 21:14
    查看更多