Translate

【matplotlib】matplotlibでダークモード的なスタイルのグラフを作成する方法【python】

こんにちは。
pythonを使うようになってくるとグラフもmatplotlibできれいに描画できるようになり、excel時代には戻れなくなっているかと思います。そうなってくるとグラフもいろいろとスタイルを変更したり、凝ったものを作ってみたくなってみるものです。その中でもよくあるのがダークモードでのグラフの作成になるかと思います。

今回はpythonのmatplotlibのグラフ描画をダークモードっぽく仕上げるための処理について簡単に紹介していこうと思います。


matplotlibでダークモードで描画するのに一番簡単なのはmatplotlibのスタイルを変更すること



pythonのmatplotlibでダークモードっぽくグラフを描画する手法の中で最も単純かつ簡便に行うことができるのは、matplotlibのグラフ描画のスタイルの設定を変更する方法が挙げられます。

具体的なコードはというと以下のような感じになります。


#必要なパッケージのインポート import matplotlib.pyplot as plt
plt.style.use('dark_background')


コードは単純で、グラフ描画を行う前にこの行を足すだけと行うことができます。ただしこのスタイルの背景は個人的にはあんまり好きではなく(黒すぎて白黒のコントラストが激しくて見ずらい)、もうちょっと改善が必要な気がしましたのでもうちょっと調べてみることにしました。


二つ目の方法としては、matplotlibで自作のスタイルを作成するという手段

先ほどの手段は、あらかじめmatplotlibのスタイル集の中にあった例をそのまま利用するという方法でしたが、思ったよりも自分のイメージするものと合わないことが多く実はちょっと使いにくい印象を受けます。

そこで第二の手法としておすすめしたいのが、matplotlibの描画の設定を自分で作ってしまうとというのがよいでしょう。

例えばこういうスタイルはどうでしょうか。ちょっとダークモードとは離れてしまいますが、ややサイバーパンクなスタイルです。

import numpy as np import matplotlib.pyplot as plt custom_style = { 'figure.facecolor': '#000033', # グラフ領域の背景色(紺色) 'axes.facecolor': '#000033', # グラフの背景色(紺色) 'axes.edgecolor': '#00aaff', # グラフの枠線の色(紺色) 'axes.labelcolor': '#00aaff', # 軸ラベルの色(紺色) 'text.color': 'white', # テキストの色(紺色) 'xtick.color': '#00aaff', # x軸目盛りの色(紺色) 'ytick.color': '#00aaff', # y軸目盛りの色(紺色) 'lines.color': '#00aaff', # ラインの色(紺色) 'patch.edgecolor': '#000033', # グラフ領域の境界線の色(紺色) 'grid.color': '#003366', # グリッド線の色(濃い紺色) 'grid.linestyle': '--', # グリッド線のスタイル(実線) 'grid.alpha': 0.4, # グリッド線の透明度 'legend.edgecolor': '#00aaff', # 凡例の境界線の色(紺色) 'legend.facecolor': '#001f3f', # 凡例の背景色(紺色) 'legend.framealpha': 0.5, # 凡例の背景色の透明度 } # カスタムスタイルの適用 plt.style.use(custom_style) #データの例 x = np.linspace(0, 2*np.pi, 200) y = np.sin(x) fig = plt.figure() ax = fig.add_subplot(111) ax.plot(x, y)

グラフ描画してみるとこんな感じです。



色合いは割と適当に作ったので、カスタムしてみるとよいと思います。ちなみに色を設定する場合にはカラーコードを選ぶと思うのですが、これは自分で色味を調整して専用のサイトで作ってもよいのですが、chatGPTに色の雰囲気を伝えてカラーコード出力してもらうのも楽で良い手法になるかなと感じました。

このような感じでmatplotlibはグラフの線自体だけのみならず、背景色とかグリッド線とかいろいろとカスタムできるので、慣れてきたらいろいろと自分好みのmatplotlibスタイルを作ってみるのもよいかもしれません。