[Matplotlib][Mathematica][Matlab] グラフのデフォルトのブルー

グラフ描画用のソフトで線を描いたときの、デフォルトのブルーのかっこよさに気づいたので、いくつか代表的なグラフ作成ソフトのデフォルトのブルーのカラーコードを調べた。
f:id:cyanatlas:20180117115521p:plain

目次

Matplotlib

MatplotlibはPythonのグラフ作成用ライブラリ(記事執筆現在の最新バージョンは2.1.1)。

デフォルトの色の話はこのページに載っている。

matplotlib.org

実は、バージョン2.0以前と2.0以後で、デフォルトの設定が変わっている。v2.0以前は原色のブルー、v2.0以降は落ち着いたブルーになっていることがわかる。

f:id:cyanatlas:20200704023340j:plain

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で見つけた。

mathematica.stackexchange.com

コード 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)のようだ。

比較

最後に、デフォルトのブルーの比較を示す。

f:id:cyanatlas:20180117115521p:plain

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