【Matplotlib】.rcParamsでグラフの一括設定&見やすくする
はじめに
rcParamsの使い方
今回使うモジュールをインポート
import numpy as np import matplotlib.pyplot as plt
デフォルトを見てみる
#データの用意 x = np.linspace(0, 2 * np.pi, 50) ys = [] for i in range(2): ys.append(np.sin(x + np.pi*i/2))
fig = plt.figure(figsize=(10,5)) ax = fig.add_subplot(111) ax.set_title("Title") ax.plot(x, ys[0], label = "$\\alpha$") ax.plot(x, ys[1], label = "$\\beta$") plt.legend()
デフォルトの設定(一部)
font.family: sans-serif
font.size: 10.0
lines.linewidth: 1.5 # line width in points
lines.linestyle: - # solid line
lines.markeredgewidth: 1.0 # the line width around the marker symbol
lines.markersize: 6 # marker size, in points
axes.prop_cycle: cycler('color', ['1f77b4', 'ff7f0e', '2ca02c', 'd62728', '9467bd', '8c564b', 'e377c2', '7f7f7f', 'bcbd22', '17becf'])
選択可能なフォント
Times New Roman, Arial, Helvetica, sans-serif, etc...
色について
#1f77b4
, #ff7f0e
, #2ca02c
, #d62728
, #9467bd
, #8c564b
, #e377c2
, #7f7f7f
, #bcbd22
, #17becf
カスタムしてみる
fig = plt.figure(figsize=(10,5)) plt.rcParams["font.family"] = "Arial" plt.rcParams["font.size"] = 18 plt.rcParams["lines.linewidth"] = 2.5 plt.rcParams["lines.linestyle"] = "--" ax = fig.add_subplot(111) ax.set_title("Title") ax.plot(x, ys[0], label = "$\\alpha$") ax.plot(x, ys[1], label = "$\\beta$") plt.legend()
色の周期を変える
matplotlibで描写する際には、自動的に色が割り振られます。その色のデフォルト周期を変えてみます。
今回はデフォルトの
[ #1f77b4
→ #ff7f0e
→ #2ca02c
→ #d62728
→ #9467bd
→ #8c564b
→ #e377c2
→ #7f7f7f
→ #bcbd22
→ #17becf
]
から、単純な
[ #ff0000
→ #000000
→ #008000
→ #0000ff
]
にしてみます。
import numpy as np import matplotlib.pyplot as plt from cycler import cycler
#色の選択 print(plt.rcParams["axes.prop_cycle"].by_key()["color"]) #defaultの色を表示 custom_cycler = (cycler(color=["r", "k", "g", "b"])) plt.rcParams["axes.prop_cycle"] = custom_cycler #customカラーに設定 print(plt.rcParams["axes.prop_cycle"].by_key()["color"]) #customの色を表示
['#1f77b4', '#ff7f0e', '#2ca02c', '#d62728', '#9467bd', '#8c564b', '#e377c2', '#7f7f7f', '#bcbd22', '#17becf'] ['r', 'k', 'g', 'b']
次にデータを描写してみます。
※先ほどのグラフの設定が残ってしまっている場合は、plt.rcdefaults()
でリセットしましょう。
#データの用意 x = np.linspace(0, 2 * np.pi, 50) ys = [] for i in range(4): ys.append(np.cos(x + np.pi*i/2))
fig = plt.figure(figsize=(10,5)) plt.rcParams["lines.linewidth"] = 2.5 ax = fig.add_subplot(111) ax.set_title("Title") for i in range(4): plt.plot(x, ys[i], label="i:{}: ".format(i)+custom_cycler.by_key()["color"][i]) plt.legend() plt.show()
リセットの方法
plt.rcdefaults()