質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

763閲覧

AttributeError: 'module' object has no attribute 'to_rgba'と表示される

aine_

総合スコア22

Anaconda

Anacondaは、Python本体とPythonで利用されるライブラリを一括でインストールできるパッケージです。環境構築が容易になるため、Python開発者間ではよく利用されており、商用目的としても利用できます。

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2018/11/23 15:29

編集2018/11/23 15:32

環境はpython2.7.15でwindows10です。
まわしたコードは

python

1import h5py 2import numpy as np 3import matplotlib.pyplot as plt 4 5 6max = [] 7for i in range (0,22700,100): 8 list =[] 9 hdf5 = h5py.File("file_%d.hdf5"%(i), 'r') 10 list.append(hdf5["element"].value) 11 max.append(np.amax(list)) 12 13plt.plot(max) 14plt.show()

で、hdf5のファイルの各々の最大値をグラフ化するというものです。
コード自体には問題はないと思います。
ググった際にmatplotlibをアップグレードすればなおるというページもありましたが、matplotlibをアップグレードしても同様のエラーがでてしまいます。

コード自体に問題ないという根拠は、以前はこのコードで回っていたことがあるからです。
アプリケーションをいれるためにanacondaを一度消して再インストールしたのですが、それ以後このエラーがでるようになってしまいました。
ちなみにanacondaも2.7です。

エラー全文は以下の通りです
Traceback (most recent call last):

File "C:\Users\user\Anaconda2\lib\site-packages\ipykernel\pylab\backend_inline.py", line 39, in show
metadata=_fetch_figure_metadata(figure_manager.canvas.figure)

File "C:\Users\user\Anaconda2\lib\site-packages\ipykernel\pylab\backend_inline.py", line 174, in _fetch_figure_metadata
if _is_transparent(fig.get_facecolor()):

File "C:\Users\user\Anaconda2\lib\site-packages\ipykernel\pylab\backend_inline.py", line 195, in _is_transparent
rgba = colors.to_rgba(color)

AttributeError: 'module' object has no attribute 'to_rgba'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

自分の環境(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/25 06:05

編集2018/11/25 06:10
KSwordOfHaste

総合スコア18392

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

aine_

2018/11/26 04:20

ありがとうございます。今回はanacondaを入れなおしたらなおりました。 事実の記載事項について、今後気を付けていきたいです。懇切丁寧にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問