Matplotlib のグラフのマーカーを指定する方法
ここでは Matplotlib を用いて描いたグラフに、マーカーを描画する方法について説明します。
Matplotlib で描画したグラフにマーカーを指定する方法
Matplotlib でグラフを書く基本的な方法については「Matplotlib で基本的なグラフを描く方法」をみてください。
グラフを書く際には Axes オブジェクトの plot() 関数を呼びます。マーカーを指定する際には、その際、marker オプションにマーカーの種類を指定します。 マーカーの種類には、四角を書くには s、円を書くには oなどのように決められた種類があります。詳しくは下の「Matplotlib のグラフのマーカー一覧」に一覧を記載しています。
さらにマーカーのサイズを指定するには、同じくplot()関数のmarkersizeオプションに数値を指定します。
上記のグラフを出力するコードは、次のようになります。
import matplotlib.pyplot as plt
x = [0, 1, 2, 3, 4, 5]
y = [1, 2, 4, 3, 5, 10]
fig, ax = plt.subplots()
ax.plot(x, y, marker='s', markersize=8)
ax.grid()
ax.set(xlabel='x', ylabel='y', title='Hello!')
plt.show()
ポイントは7行目です。markerオプションに's'が指定しているので、四角のマーカーが表示されています。 また、マーカーの大きさは markersizeオプションで8が指定されています。
Matplotlib のグラフのマーカー一覧
Matplotlib で使える基本的なマーカーは次のようなものがあります。
凡例 | marker の値 | 説明 |
---|---|---|
![]() | . | point |
![]() | , | pixel |
![]() | o | circle |
![]() | v | triangle down |
![]() | ^ | triangle up |
![]() | < | triangle left |
![]() | > | triangle right |
![]() | '1' | tri down |
![]() | '2' | tri up |
![]() | '3' | tri left |
![]() | '4' | tri right |
![]() | '8' | octagon |
![]() | s | square |
![]() | p (小文字) | pentagon |
![]() | P (大文字) | plus (filled) |
![]() | * | star |
![]() | h | hexagon1 |
![]() | H | hexagon2 |
![]() | + | plus |
![]() | x (小文字) | x |
![]() | X (大文字) | x (filled) |
![]() | D | Diamond |
![]() | d | thin diamond |
![]() | | | vline |
![]() | _ (下線) | hline |
![]() | 0 | tick left 左側 |
![]() | 1 | tick right 右側 |
![]() | 2 | tick up |
![]() | 3 | tick down |
![]() | 4 | caret left |
![]() | 5 | caret right |
![]() | 6 | caret up |
![]() | 7 | caret down |
![]() | 8 | caret left (centered at base) |
![]() | 9 | caret right (centered at base) |
![]() | 10 | caret up (centered at base) |
![]() | 11 | caret down (centered at base) |
![]() | none | マーカーなし |
![]() | $foo$ | $ で囲んだ任意の文字 |
試しに、これらを表示すると次のようになります。
ちなみに、この図を表示したコードは次のようになります。
import matplotlib.pyplot as plt
import numpy as np
def draw_lines(ax, markers):
x = np.linspace(0, 5, 6)
y = 0.5 * x
d = len(markers) * 0.5
for m in reversed(markers):
label = '[' + str(m) + ']'
ax.plot(x, y + d, marker=m, markersize=16, label=label)
d -= 0.5
markers1 = [
'.', ',', 'o', 'v', '^',
'<', '>', '1', '2', '3',
'4', '8', 's', 'p', 'P',
'*', 'h', 'H', '+', 'x'
]
markers2 = [
'X', 'D', 'd', '|', '_',
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,
'none', '$foo$'
]
fig, axs = plt.subplots(1, 2)
fig.suptitle('Hello Markers')
draw_lines(axs[0], markers1)
draw_lines(axs[1], markers2)
axs[0].legend(fontsize=16, framealpha=1, loc='center right')
axs[1].legend(fontsize=16, framealpha=1, loc='center left')
plt.show()
以上、ここではグラフのマーカーの指定方法と、マーカーの種類を紹介しました。