「Matplotlibできれいなグラフを作りたいけど設定方法がいまいちわからない」と思っている人向けの記事です。
この記事を読めばMatplotlibで毎回面倒な設定を行わなくても良くなります。
Matplotlibで作成するグラフの外観調整の為に、グラフ作成時に1つ1つ項目を設定するのは少々面倒です。項目設定方法を暗記出来ているならば良いのですが、多くの人が、グラフ作成の度に調べて、そして、直ぐに忘れる、また調べる・・・という事を繰り返していると思います。
自分好みのグラフスタイルが定まっていれば、その設定を環境設定ファイル(matplotlibrc)に記述し、使い回すことが出来ます。毎回設定する手間が省けるので便利です。
そこで、今回はmatplotlibrcの設定の仕方について説明します。matplotlibrcに設定を書いて使い回せば、余分なコードを書かなくて済む、且つ、コードがスッキリします。
ちなみに、Matplotlibについて検索すると色々情報が出てきますが、書き方が統一されていなかったりして混乱してしまいます。ちゃんとした使い方を知るためにはやはりリファレンスとなる書籍を持っておいたほうが良いです。
Matplotlibを使うならば以下の書籍をリファレンスとして持っておくと良いでしょう。
matplotlibrcとは?
matplotlibrcとは、Matplotlibのスタイル設定に関する項目を設定するファイルです。Matplotlibを使用する際に、特に何も指定しなければ、Matplotlibはこのmatplotlibrcを参照しに行きます。
現在参照されているmatplotlibrcのパスは下記を入力すると確認出来ます。
import matplotlib as mpl
mpl.matplotlib_fname()
#/Users/<username>/.pyenv/versions/anaconda3-5.3.1/lib/python3.7/site-packages/matplotlib/mpl-data/matplotlibrc
Matplotlibパッケージがインストールされたディレクトリ/mpl-data/にmatplotlibrcがあります。
尚、表示されるパスは環境によって異なります。上記はPyenv + Anacondaの環境で表示されたパスになります。
matplotlibrcの中身は下に示すような感じです。#(コメントアウト)を外せば、外した箇所の設定が反映されます。
## The three standard dash patterns. These are scaled by the linewidth.
#lines.dashed_pattern : 3.7, 1.6
#lines.dashdot_pattern : 6.4, 1.6, 1, 1.6
#lines.dotted_pattern : 1, 1.65
#lines.scale_dashes : True
#markers.fillstyle: full ## full|left|right|bottom|top|none
#### PATCHES
## Patches are graphical objects that fill 2D space, like polygons or
## circles. See
## http://matplotlib.org/api/artist_api.html#module-matplotlib.patches
## information on patch properties
#patch.linewidth : 1 ## edge width in points.
#patch.facecolor : C0
#patch.edgecolor : black ## if forced, or patch is not filled
#patch.force_edgecolor : False ## True to always use edgecolor
#patch.antialiased : True ## render patches in antialiased (no jaggies)
#### HATCHES
#hatch.color : black
#hatch.linewidth : 1.0
matplotlibrcの編集
自分好みのスタイルを設定するには、matplotlibrcを編集すれば良いのですが、上記で表示されたディレクトリのmatplotlibrcを編集してしまうとオリジナルの設定が失われてしまいます。そこで、オリジナルのmatplotlibrcは編集せずに、別のディレクトリにmatplotlibrcをコピーします。
コピー場所は、下記のコマンドに表示されたディレクトリになります。ファイル名はmatplotlibrcのままでOKです。
import matplotlib as mpl
mpl.get_configdir()
上の実行して表示されるパスは環境によって異なるかもしれません。おそらく一般的には、下記のようになると思われます。
- Mac : ~/.matplotlib
- Ubuntu : ~/.config/matplotlib
- Windows : C:¥¥Documents and Settings¥¥<user-name>¥¥.matplotlib
上記にmatplotlibrcをコピーし編集すれば、matplotlibで作図する際に自分好みのスタイルが適用されます。
matplotlibrcの置き場所
matplotlibrcを現在のワーキングディレクトリに置いても、設定したスタイルは適用されます。しかし、異なるワーキングディレクトリ移動し、そこで描画コードを作成した場合は先のスタイルは適用されません。デフォルト、または、上述したパスに配置されたmatplotlibrcの設定が反映されます。
なぜ、このような事が起こるかというと、Matplotlibは下記の順序でmatplotlibrcを読み込むからです。
- 現在のワーキングディレクトリのmatplotlibrc
- mpl.get_configdir()で表示されるディレクトリのmatplotlibrc
- mpl.matplotlib_fname()で表示されるディレクトリのmatplotlibrc
この1, 2の順序を覚えておけば、普段使用する設定と、特定の場合のみ使用する設定を使い分ける事が出来ます。先程も述べましたが、3のmatplotlibrcを変更することは余りお薦めしません。1と2を使い分けましょう。