環境設定¶
Matplotlib を利用するための環境をもっと細かく整備してみよう。
Note
このページの一部に関しては次の動作環境を使用:
- OS:
Windows 10 Home x64 上の WSL2
- Python:
3.12.3
- Matplotlib:
3.8.4
設定ファイル matplotlibrc
概要¶
Matplotlib 環境のユーザー設定ファイルについて記す。
Matplotlib が扱う、図式の寸法や図形の色といった、性質のほとんどを指定するために設定ファイルというものを利用することができる。
設定ファイル名は
matplotlibrc
だ。この設定ファイルによる設定のことを rc settings とか rc parameters とかと呼ぶ。
その設定ファイルのあるディレクトリーは次の優先度で決まる。
作業ディレクトリー。
ユーザーの環境依存のディレクトリー。
Windows 環境でもユーザーがわざわざ環境変数
HOME
を設定している場合は Matplotlib はきちんとそのパスを参照してくれる。一度でも Matplotlib を利用すると、
$HOME
にフォルダー.matplotlib
ができている。そこにテキストファイルmatplotlibrc
を自分で作成する。WSL2 などの Linux 系環境では XDG 環境変数を利用するのが定石となっている。 Matplotlib の場合はこのようにしたい:
# E.g. in .bashrc: export MATPLOTLIBRC="$XDG_CONFIG_HOME/matplotlib"
次の状態にしたい:
$ python -c 'import matplotlib as mpl; print(mpl.get_configdir())' /home/USERNAME/.config/matplotlib
この運用では環境変数
MATPLOTLIBRC
の定義を明示的に与える必要はないが、コンソールで cd するときに便利だ。既定の設定ファイルをそこへ移す:
$ mkdir -p $MATPLOTLIBRC $ mv ~/.matplotlib/* $MATPLOTLIBRC
See also
Matplotlib インストール場所から決まるディレクトリー。
Matplotlib のアップグレードの度に上書きされると思っていたほうがよい。したがって、この設定ファイルを編集するような状況はまれだと思う。
実際に参照される設定ファイルは、関数
mpl.matplotlib_fname
の呼び出しで確認可能。インストール場所から決まるディレクトリーに置いてある設定ファイルをコピー、編集して使う。
テンプレは基本的に設定コマンド?のコメントアウトで埋め尽くされている。ここを眺めていればカスタマイズの方法は直感できる仕組みになっている。
設定ファイル
matplotlibrc
をテキストエディターで編集するときには、もし python-mode 的な機能をサポートするエディターを使うのならば、それを ON にする。コードの見通しがよくなる(コメント文字列がコメント色になるだけだが)。
カスタマイズする¶
先述の方法でユーザー設定ファイルを生成し、次のように編集して手持ちのプロットの表示がどのように変化するのかを検証した。
PyQt5 が使用可能な環境では試しに
backend : Qt5Agg
としてみる。経験則だが
backend
の項目だけは他の項目とは異なり、コメントアウトによるデフォルト値適用の解釈がなされないようだ。何らかのバックエンドを明示的に指定する必要があるもよう。
Miniconda 管理下における Python 3.5.2 環境では既定のバックエンドである TkAgg が指定されたままであると、私の環境では実行時に Segmentation fault を引き起こす。そのため、唯一動作確認できたバックエンドである
backend : Qt4Agg``を、PyQt5 を利用可能な環境にあれば ``backend : Qt5Agg
を設定してしのぎたい。plt.plot
の線の色はaxes.prop_cycle
で指定する。カンマ区切りで数色を一度に指定する。プロットを
plt.plot
呼び出しで追加するたびに、カンマで区切られた色が cyclic に適用されるのだろう。これを確認するには 基本テク で示したポリライン複数本描画スクリプトを利用できる。下記のリスト内の内容を修正すると、それにつれて曲線の色が変わることがわかる:axes.prop_cycle: cycler('color', ['deeppink', 'pink', 'b', 'g', 'r', 'c', 'm', 'y', 'k'])
LaTeX 周りの設定は要研究。特にフォントの指定は大切そうだ。
ハードコピーバックエンドのデフォルト値を
savefig.format
で設定できる。savefig.format: png # png, ps, pdf, svg