RuntaScience diary

気象系データを扱う学生 旅が好きです

【Matplotlib】.rcParamsでグラフの一括設定&見やすくする

この記事をシェアする

f:id:RuntaScience:20210503171146p:plain

はじめに

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

f:id:RuntaScience:20210503160731p:plain

デフォルトの設定(一部)

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

f:id:RuntaScience:20210503162120p:plain

色の周期を変える

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

f:id:RuntaScience:20210503163106p:plain

リセットの方法

plt.rcdefaults()

参考文献

プライバシーポリシー
お問い合わせ