matplotlibのデフォルトバックエンドを変更

環境はWindows10上の本家Python3だったけど、他の環境でも多分同様。

Pythonのインストールの際にIDLE(付属のシンプルな開発環境)のオプションを外すとGUIツールキットのTkinterもインストールされなくなる。その場合、matplotlibでグラフを表示するには何らかのGUIツールキットをインストールして、それを使うように指定する必要がある。ちなみに後からTkinterだけインストールしようとしたがうまくいかなかった。

自分の場合は比較的馴染みのあるwxPythonを指定するために、matplotlibのインポートのたびに以下のように書いていた。

import matplotlib
matplotlib.interactive( True )
matplotlib.use('WXAgg')
import matplotlib.pyplot as plt

これだけなら多少手間がかかる程度なのだが、lintを使っていると「importとimportの間にコードを書くな」という旨の警告が出る。これがどうにもうっとうしかった。


色々調べたり試したりして毎回GIツールキットを指定しないで済むようにできたのでメモしておく。

具体的には、matplotlibの設定ファイル中でGUIツールキットを指定してやる。
まず設定ファイルの場所を確認するために、Pythonでmatplotlibのget_configdir()メソッドを実行して設定ファイルの場所を表示させる。

import matplotlib as mpl
print(mpl.get_configdir())

表示されたフォルダに行き、matplotlibrc という名前のファイルがあればそれを編集する。ファイルが無ければ新たに作り、以下の1行を記入する。

バックエンドをwxPythonにする場合は

backend: WXAgg

これで、単に

import matplotlib
import matplotlib.pyplot as plt

だけで済み、lintの警告も無くなる。

ちなみにPython を All user向けにProgram Files下にインストールした場合、以下のフォルダにmatplotlibrcが既にあるかも知れないが、これを編集しても反映されなかった。

C:\Program Files\Python37\Lib\site-packages\matplotlib\mpl-data\matplotlibrc

ただし、このファイルの内容は設定変更の参考になるのでざっと眺めてみても良いかも知れない。