自分の環境(Windows 10 + Anaconda 2.7)では質問者さんのコードとほぼ同じもの(h5py, numpy, matplotlibを使ったもの)が動作したので参考までに自分の環境についてコメントしてみます。
なお、ご質問には事実の記載が少ないと感じました。なんでもかんでもたくさん情報があればよいわけではありませんが、閲覧者には質問者さんがどんな環境で何をどうやったのか正確にわからないのですから、例えばmatplotlibのバージョンが古い可能性があるかも知れないと思ったなら実際のバージョンを明記しておくべきだと思います。「どの事実を明記すべきか」についてもう少し配慮できたら・・・といったところではないでしょうか。以下の自分の記述は逆に冗長すぎると思いますが何かのヒントになればと思いあえてそうしています。
Anacondaインストール前の環境
WindowsにはCPython 3.7がインストールしてあります。こちらは普段使いなのでPATHにもつなげてます。
Anacondaインストール
https://www.anaconda.com/download/から最新の5.3.1 Python 2.7 VersionをDLしてインストールしました。
(A)Just Meを選択
(B)インストール先はC:\Users\ksoh\Anaconda2
(C)Add Anaconda to my PATH environment variable =>チェックしない
(D)Register Anaconda as my default Python 3.7 =>チェックしない
(C)はAnacondaのuninstall/reinstallで問題を引き起こす可能性があるので推奨しないとのことですが、「なんで?」と思ったものの、自分は普段CPythonを使うためあまり気にしないことにしました。また同じ理由でAnaconda環境はAnaconda Prompt/Notebook/Spiderを通じて利用し、PyCharmなどはあえて使わないと決めたので(D)のチェックも外しました。
インストール後の環境
(E) matplotlibバージョン
Anaconda NavigatorのEnvironmentで見るとmatplotlibバージョンは2.2.3でした。
import matplotlib.colors as colors;print hasattr(colors, "to_rgba")
はTrueです。(動いたんだから当然といえますが)
(F) 環境変数PATH
Start MenuからNotebook起動
Start MenuからAnaconda Promptを起動しそこからipythonを動かす
このパターンで環境変数PATHをfor p in os.environ['PATH'].split(';'): print p
で調べると
C:\Users\ksoh\Anaconda2
C:\Program Files\Python37 <= 最初から入っていたCPython 3.7
の順(期待通り)になってました。一方念のためStart MenuからPowerShellを起動し$env:path.split(";")
を見るとAnacondaがPATHに含まれてません(期待通り)でした。
(G) matprotlibrc
自分はこれを作成していません。よって
C:\Users\ksoh.matplotlib
にもプログラムを動かしている作業ディレクトリーにも
matplotlibrcが存在しない前提で確認しました。
問題のプログラムの実行
スタックトレースを拝見するとmatplotlibのバックエンドがinline表示用(module://ipykernel.pylab.backend_inline
)のようでしたので、
Start MenuからNotebook起動
Anaconda NavigatorからQtConsoleを起動
の2パターンでまず以下をやってみました。(IPythonのプロンプトは省略してます)
ptyhon
1import matplotlib.pyplot as plt
2plt.plot([1, 3, 2]) # => [<matplotlib.lines.Line2D at 0x7ba4978>]
3# (QtConsoleではこの時点でグラフがインライン表示された)
4
5plt.show()
6# (Notebookではセルにここまで書いて初めてインライン表示された)
7import matplotlib as mpl
8print mpl.get_backend() # => module://ipykernel.pylab.backend_inline
9 # inline用のバックエンドになってました
Notebookの記事を見ますと%matplotlib inline
なんて指定しているのを見かけますがAnacondaからNotebookやQtConsoleを起動する限りはこのようなバックエンドの指示は不要のようです。
一方、Anaconda Promptから上記の内容のPythonスクリプトtest.pyを次のようにpythonで実行すると
(base) C:\User\ksoh>python test.py
Qt5Agg
バックエンドはinline用ではなくQt5Aggとなり、Anaconda Promptとは別のウィンドウが出てそこにグラフが表示されます。
ちょっと疑問
Anacondaでinline用の表示をするにもかかわらずフロントエンドがipythonでない(それはスタックトレースの形式からわかります)という質問者さんの状況がよくわかりませんでした。
具体的にどのようにプログラムを起動しておられるのでしょうか?そのあたりも明記するとよいと思います。
基本的な環境情報のいくつかを調べる簡単なスクリプトを書いてみました。
あれみてこれみて・・・と調べるより、このスクリプトを「どういう手順で起動したか」「実行した結果」をそのまま記載した方が質問側・閲覧側に情報伝達の祖語がおきにくいかも知れません。
python
1# python 2.7 について
2import os, sys
3
4print 'sys.executable:', sys.executable
5print '%PATH%:'
6for p in os.environ['PATH'].split(';'):
7 print " '%s'" % p
8print 'sys.path:'
9for p in sys.path:
10 print " '%s'" % p
11
12# matplotlibについて
13import matplotlib as mpl
14print 'matplotlib: ', mpl.__version__
15print 'backend: ', mpl.get_backend()
16
17# numpy, h5py
18import numpy
19print 'numpy: ', numpy.__version__
20import h5py
21print 'h5py: ', h5py.__version__
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/11/26 04:20