matplotlibはデフォルトでは下の画像のように背景が真っ白で, 長時間見ていると目が痛くなるから別の色に変更したい. しかし, スタイルシートをわざわざ自作するのも億劫である. 調べてみるとプリセットのスタイルシートが使えるとのことなので, 使い方を簡単に書き留めておこうと思う.
import
import matplotlib.pyplot as plt
スタイルシート一覧
plt.style.available
利用可能なスタイルシート一覧を配列として取得できる.
配列の中身は以下の通り.
['bmh',
'classic',
'dark_background',
'fast',
'fivethirtyeight',
'ggplot',
'grayscale',
'seaborn-bright',
'seaborn-colorblind',
'seaborn-dark-palette',
'seaborn-dark',
'seaborn-darkgrid',
'seaborn-deep',
'seaborn-muted',
'seaborn-notebook',
'seaborn-paper',
'seaborn-pastel',
'seaborn-poster',
'seaborn-talk',
'seaborn-ticks',
'seaborn-white',
'seaborn-whitegrid',
'seaborn',
'Solarize_Light2',
'tableau-colorblind10',
'_classic_test']
黒い方がかっこいいので, dark_background
あたりが良さそう.
スタイルを適用する
plt.style.use('dark_background')
最初にこの一行でスタイルを適用したら, 後はいつも通りにグラフを描いたり画像を表示したりするだけ.
サインカーブを描いてみる
こういうときはサインカーブと相場は決まっているので, さっそく描いて確かめてみる.
import numpy as np
x = np.linspace(0, 2*np.pi, 200)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)
良いと思う.
がしかし, 少し黒すぎる気もする.
簡単な自作スタイルシート
自作のスタイルシートは作らないつもりだったが, 少しだけいじってみる.
スタイルシートが入っているフォルダはpythonのフォルダからLib/site-packages/matplotlib/mpl-data/stylelib/
と下っていけば見つかる. その中にdark_background.mplstyle
というファイルがあるので, それを開く. 内容は以下の通り.
# Set black background default line colors to white.
lines.color: white
patch.edgecolor: white
text.color: white
axes.facecolor: black
axes.edgecolor: white
axes.labelcolor: white
axes.prop_cycle: cycler('color', ['8dd3c7', 'feffb3', 'bfbbd9', 'fa8174', '81b1d2', 'fdb462', 'b3de69', 'bc82bd', 'ccebc4', 'ffed6f'])
xtick.color: white
ytick.color: white
grid.color: white
figure.facecolor: black
figure.edgecolor: black
savefig.facecolor: black
savefig.edgecolor: black
見ての通り, それぞれの項目に色が割り振られてあるだけで, それほど難しくはない.
このファイルに登場するすべてのblack
を別のもう少しマイルドな黒に置換すれば, 求めるスタイルシートになりそうだ.
カラーコード一覧を見て適当な色を選ぶ.
2e2e2e
あたりがちょうど良さそうなので, このファイルをコピーし, すべてのblack
を2e2e2e
に置換したものをdarkgray_background.mplstyle
などのファイル名で同じフォルダに保存する.
# Set 2e2e2e background default line colors to white.
lines.color: white
patch.edgecolor: white
text.color: white
axes.facecolor: 2e2e2e
axes.edgecolor: white
axes.labelcolor: white
axes.prop_cycle: cycler('color', ['8dd3c7', 'feffb3', 'bfbbd9', 'fa8174', '81b1d2', 'fdb462', 'b3de69', 'bc82bd', 'ccebc4', 'ffed6f'])
xtick.color: white
ytick.color: white
grid.color: white
figure.facecolor: 2e2e2e
figure.edgecolor: 2e2e2e
savefig.facecolor: 2e2e2e
savefig.edgecolor: 2e2e2e
自作のスタイルを適用する
シェルを開きなおし, plt.style.available
で確認すると, darkgray_background
が新たに追加されている.
例のごとくサインカーブをプロットしてみる.
import numpy as np
x = np.linspace(0, 2*np.pi, 200)
y = np.sin(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, y)
これでだいぶグレーになった.
このように自作スタイルを適用したい場合も, 基本的にはプリセットのスタイルシートを参考に自分好みにマイナーチェンジしていけば, それほど労力はかからないだろう.