web-dev-qa-db-ja.com

PyCharmはmatplotlibプロットを正しく開きません

PyCharmとmatplotlibに問題があるのですが、修正できないようです。

コマンドを解釈するコンソールとしてPyCharmとipythonを使用すると、図を保存するまでプロットが表示されません。ただし、PyCharmの外部からプロットしようとすると、これは起こりません。

PyCharmでfailsの例のプロセスを次に示します。

_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')
_

このwillは、「図1」というラベルの付いたウィンドウを開きます。ただし、プロットが表示されず、マウスをSPODに合わせるとマウスが切り替わります(Macを使用しています)。この時点で、私は試すことができます

_In[4]: plt.show()
_

それでも、プロットは表示されません。 ただし、、私がそうすれば:

_In[5]: plt.savefig('foo.png')
_

その名前で図が保存されるだけでなく、図1ウィンドウにプロットが表示されます。 PyCharmはインタラクティブモードをオンに設定しており、私のバックエンドがMacOSであることを認識していることに注意してください。

一般的な端末セッションでpythonとipythonコンソール、さらにemacsの両方で同じプロセスを使用しました。すべての場合、plt.plot()を呼び出すとプロットが表示されます。 line。plt.show()呼び出しは不要です。

実際、PyCharmを介してターミナルを使用して、目的のプロットを取得することもできます。 1つの答えは、これらのメソッドを使用してプロットを行い、PyCharmを無視するだけでよいということです。ただし、PyCharmの「ベルとホイッスル」は十分に魅力的で、IDEとして実際に使用したいが、plt.savefig()を介さずにプロットを調べることができると思います面倒(私が試みるすべてのプロットを保持する必要はないので)。

plt.switch_backend()を介してバックエンドの切り替えも試みました。リストされたすべてのオプションを試しましたが、特定のパッケージがインストールされていないか、間違ったシステムにあることがほとんどの理由で失敗します。私はnot新しいバックエンドを使用するために何かをインストールしようとしたので、適切にインストールされた別のバックエンドがこの問題を解決するかどうかわかりません。もちろん、試してみること以上のものです!

システムの詳細:

MacBookPro Retina 2012年半ば、16GB RAM、ヨセミテ10.10

Python 3.4.2

ipython 2.3.1

PyCharm Community Edition 4.0.4

次の質問からの修正のバリエーションを確認し、試行したことに注意してください。

Pythonプロットは開きません

matlab/pythonでバックエンドを切り替える方法

PyCharm + Matplotlib?

Matplotlibの図がスタック(灰色のウィンドウ)

matplotlibは、pyplot.show() を呼び出しても図面を表示しません

[〜#〜] edit [〜#〜]以下のコメントにあるように、これは bug のように見えます。私の側の設定の失敗ではありません。そのため、この質問を修正して、既知の回避策があるかどうかを尋ねています。

24
Savage Henry

OS XでのPyCharm(最新のv5バージョンを含む)には、PythonをOS Xにインストールできる方法が原因で発生する既知の問題があります。

ほとんどの人はbrewを使用してPython 2および3をインストールします。これは、コマンドラインから使用されるデフォルトのPythonインタープリターを置き換えます。デフォルトのインタープリターとpip実行可能ファイルは、GUIアプリケーションでも置き換えられません。

より具体的な回答が必要な場合は、以下を使用して環境を適切に文書化する必要があります。

  • コマンドラインから_which -a python_を実行します
  • コマンドラインから_which -a pip_を実行します
  • pyCharmとコンソールの内部からprint(sys.path)print(os.env)を実行し、それらを比較します。

おそらくこれを行うことで、間違ったバージョンのモジュールがロードされていることに気付くでしょう。

1
sorin