10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

matplotlibをダークテーマにしたい

Last updated at Posted at 2020-07-02

matplotlibはデフォルトでは下の画像のように背景が真っ白で, 長時間見ていると目が痛くなるから別の色に変更したい. しかし, スタイルシートをわざわざ自作するのも億劫である. 調べてみるとプリセットのスタイルシートが使えるとのことなので, 使い方を簡単に書き留めておこうと思う.

default_sin.png

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)

dark_sin.png

良いと思う.
がしかし, 少し黒すぎる気もする.

簡単な自作スタイルシート

自作のスタイルシートは作らないつもりだったが, 少しだけいじってみる.

スタイルシートが入っているフォルダはpythonのフォルダからLib/site-packages/matplotlib/mpl-data/stylelib/と下っていけば見つかる. その中にdark_background.mplstyleというファイルがあるので, それを開く. 内容は以下の通り.

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あたりがちょうど良さそうなので, このファイルをコピーし, すべてのblack2e2e2eに置換したものをdarkgray_background.mplstyleなどのファイル名で同じフォルダに保存する.

gray_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)

gray_sin.png

これでだいぶグレーになった.

このように自作スタイルを適用したい場合も, 基本的にはプリセットのスタイルシートを参考に自分好みにマイナーチェンジしていけば, それほど労力はかからないだろう.

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?