[Matplotlib] 折れ線グラフのカスタマイズ

基本の折れ線グラフ

次は折れ線グラフの見た目を色々と変えてみます。いつものように、ランダムなデータを準備しておきます。

import numpy as np
import matplotlib.pyplot as plt

np.random.seed(0)

# 0~100のランダム値(整数)を生成
x = [i for i in range(20)]
y = [np.random.randint(0, 100) for i in range(20)]

何も設定を変えない場合はこんな感じです。

_, ax = plt.subplots()
ax.plot(x, y)

plt.show()

色の変更

色はオプションcで変えられます。

ax.plot(x, y, color='r')

線の太さを変える

線の太さはlinewidthで変更します。

ax.plot(x, y, color='r', linewidth=4)

マーカーの変更

マーカーの種類はmarkerで変更できます。

ax.plot(x, y, marker='o')

使えるマーカーは種類は以下のMarkers参照
matplotlib.axes.Axes.plot – Matplotlib 3.5.2 documentation

マーカーの種類の可視化 (一部)

試しにいくつかマーカーを書いてみました。$$でくくることで、マーカーに文字列を使うこともできます。

fig, ax = plt.subplots(4, 3, figsize=(10, 6))

# デフォルト
ax[0, 0].plot(x, y)
ax[0, 0].set_title('None')

# 小さい丸
ax[0, 1].plot(x, y, marker='.', markersize=7)
ax[0, 1].set_title('.')

# 大きい丸
ax[0, 2].plot(x, y, marker='o', markersize=7)
ax[0, 2].set_title('o')

# 下向き三角
ax[1, 0].plot(x, y, marker='v', markersize=7)
ax[1, 0].set_title('v')

# 左向き三角
ax[1, 1].plot(x, y, marker='<', markersize=7)
ax[1, 1].set_title('<')

# 下向きの三本線記号 (これ何ていう記号なんでしょうか。。)
ax[1, 2].plot(x, y, marker='1', markersize=7)
ax[1, 2].set_title('1')

# 8角形
ax[2, 0].plot(x, y, marker='8', markersize=7)
ax[2, 0].set_title('8')

# 5角形
ax[2, 1].plot(x, y, marker='p', markersize=7)
ax[2, 1].set_title('p')

# ×印
ax[2, 2].plot(x, y, marker='x', markersize=7)
ax[2, 2].set_title('x')

# 縦線
ax[3, 0].plot(x, y, marker='|', markersize=7)
ax[3, 0].set_title('|')

# 横線
ax[3, 1].plot(x, y, marker='_', markersize=7)
ax[3, 1].set_title('_')

# ABC (見づらいためマーカーサイズを大きくしました)
ax[3, 2].plot(x, y, marker='$ABC$', markersize=20)
ax[3, 2].set_title('$ABC$')

fig.tight_layout()

# plt.show()
plt.savefig('plot.png')

様々なマーカーの設定

その他色々マーカーで遊んでみました。マーカーには透過度を指定するパラメータはありませんが、色指定時にRGBAを設定すれば透過するマーカーも作成できます。

ax.plot(x, y, marker='o', markersize=10, markeredgecolor='r', markerfacecolor=[0.0, 0.0, 0.0, 0.5], markeredgewidth=3)

マーカーの間隔設定

何個飛ばしかでマーカーを表示させたい場合は、markeveryを使用します。

ax.plot(x, y, marker='o', markevery=3)

線の設定

線の種類の変更

linestyleを使うと線の種類を変更できます。ここでは破線に変更してみました。

ax.plot(x, y, marker='o', linestyle='--')

透明度を変更 (線とマーカー)

colorでRGBAもしくはalphaを設定し、markerfacecolorが設定されていない場合、線とマーカー両方に設定が適用されます。

ax.plot(x, y, marker='o', linestyle='--', linewidth=2, color=[1.0, 0.0, 0.0, 0.5])

markerfacecolorでマーカーの色を別で設定すると、線と異なる色・透明度の設定ができるようになります。

ax.plot(x, y, marker='o', markerfacecolor='r', linestyle='--', linewidth=2, color=[1.0, 0.0, 0.0, 0.5])

fmtによるラインとマーカーの設定

plotの線とマーカー、色の指定はfmtという形式で簡略化して行うこともできるそうです。線の太さや透過度などはこれだけでは設定できませんので、一番下の行のように追加で記載する必要があるみたいです。

fmtの書き方は下の順で記号を並べます。
fmt = '[marker][line][color]'

fig, ax = plt.subplots(3, 2, figsize=(10, 6))

# マーカー'o'の実践
ax[0, 0].plot(x, y, 'o-')  
ax[0, 0].set_title('o-')

# 点線
ax[0, 1].plot(x, y, '--')  
ax[0, 1].set_title('--')

# 赤線
ax[1, 0].plot(x, y, 'r')  
ax[1, 0].set_title('r')

# マーカー'o'で赤色の点線
ax[1, 1].plot(x, y, 'o--r')  
ax[1, 1].set_title('o--r')  

# マーカー'o'で赤色の点線 + 先の太さ2pt
ax[2, 0].plot(x, y, 'o--r', linewidth=2)  
ax[2, 0].set_title('o--r + linewidth')

# マーカー'o'で赤色の点線 + マーカーの塗り潰し色が緑
ax[2, 1].plot(x, y, 'o--r', markerfacecolor='g')  
ax[2, 1].set_title('o--r + markerfacecolor')

コメントを残す

メールアドレスが公開されることはありません。