[Matplotlib][Mathematica][Matlab] グラフのデフォルトのブルー
グラフ描画用のソフトで線を描いたときの、デフォルトのブルーのかっこよさに気づいたので、いくつか代表的なグラフ作成ソフトのデフォルトのブルーのカラーコードを調べた。
目次
Matplotlib
MatplotlibはPythonのグラフ作成用ライブラリ(記事執筆現在の最新バージョンは2.1.1)。
デフォルトの色の話はこのページに載っている。
実は、バージョン2.0以前と2.0以後で、デフォルトの設定が変わっている。v2.0以前は原色のブルー、v2.0以降は落ち着いたブルーになっていることがわかる。
Matplotlib(v2.0以降)のデフォルトのブルーは、Axes.plot
などのメソッドにcolor='C0'というキーワード引数を設定することで指定できる。
コード 1(Python)
ax.plot([0, 1], [1, 1], color='C0')
一番最後にソフト間で色の比較をするが、そのときは他と比較しやすいようにあえ
ax.plot([0, 1], [1, 1], color=[0.122, 0.467, 0.706])
と書いた(小数点以下3ケタまでで四捨五入)。
Mathematica
Mathematicaは記号計算やグラフ作成のできる有料ソフト(記事執筆時点のMathematicaの最新バージョンは11.2)。ここではオンラインで(無料で)使えるwolframcloudで試した。
https://sandbox.open.wolframcloud.com
Mathematicaのデフォルトのカラーテーマに関する質問をStackexchangeで見つけた。
コード 2(Mathematica)
ColorData[97, "ColorList"][[1]] // InputForm
上のコードをMathematicaで実行すると
出力 2
RGBColor[0.368417,0.506779,0.709798]
とデフォルトのブルーのカラーコードを教えてくれる。Mathematicaのデフォルトのブルーはなかなかかっこいいので個人的にはおすすめ。
Matlab
Matlabは数値計算やグラフ作成のできる有料ソフト(記事執筆時点の最新バージョンはR2017b)。
デフォルトの色に関する公式のページがあった。
プロットの各ラインの色が異なる理由 - MATLAB & Simulink - MathWorks 日本
このページによれば、デフォルトのブルーはrgb=(0, 0.4470, 0.7410)
のようだ。
比較
最後に、デフォルトのブルーの比較を示す。
MatlabとMaplotlibはかなり近い色に感じる。Mathematicaは他二つとは大きく異なり、二つよりも落ち着いた色になっていることが分かる。Matlab・Matplotlibのブルーが明るいと感じたら、Mathematicaのブルーを指定してみるといった使い方がよいかもしれない。
上の図を作成するソースコードを示しておく。
https://gist.github.com/cyan8810/5a98be1883217da04ae3064e946fe44b
import matplotlib.pyplot as plt LINEWIDTH = 10 FONTSIZE = 14 SHIFT = 0.5 DPI = 600 def main(): fig = plt.figure() ax = fig.add_subplot(111) # Mathematica ax.plot([0, 1], [1, 1], color=[0.368, 0.507, 0.710], linewidth=LINEWIDTH) ax.text(1.0, 1 - SHIFT, 'Mathematica', horizontalalignment='right', fontsize=FONTSIZE) # Matplotlib ax.plot([0, 1], [2, 2], color=[0.122, 0.467, 0.706], linewidth=LINEWIDTH) ax.text(1.0, 2 - SHIFT, 'Matplotlib', horizontalalignment='right', fontsize=FONTSIZE) # Matlab ax.plot([0, 1], [3, 3], color=[0, 0.447, 0.741], linewidth=LINEWIDTH) ax.text(1.0, 3 - SHIFT, 'Matlab', horizontalalignment='right', fontsize=FONTSIZE) # Blue (for comparison) ax.plot([0, 1], [5, 5], color=[0, 0, 1], linewidth=LINEWIDTH) ax.text(1.0, 5 - SHIFT, 'Blue', horizontalalignment='right', fontsize=FONTSIZE) ax.set_ylim(0, 6) ax.tick_params(labelbottom="off", bottom="off", labelleft="off", left="off") ax.spines["right"].set_color("none") ax.spines["left"].set_color("none") ax.spines["top"].set_color("none") ax.spines["bottom"].set_color("none") fig.savefig('default_blue', dpi=DPI, bbox_inches='tight') if __name__ == '__main__': main()