matplotlibでは様々な線のスタイルを設定できるため、データの視覚化をより効果的に行えます。本記事では、matplotlibのlinestyleの設定方法と活用例を解説します。
linestyleパラメータの設定方法
matplotlibでlinestyleを設定するには、主に以下の方法があります。
キーワード引数として設定する方法:
plt.plot(x, y, linestyle='--') # 破線
省略形のlsを使用する方法:
plt.plot(x, y, ls='--') # 破線
フォーマット文字列で一括指定する方法:
plt.plot(x, y, 'r--') # 赤色の破線
この方法では、色(r=赤)と線のスタイル(–=破線)を一つの文字列で指定できます。
辞書形式で設定する方法:
line_props = {'linestyle': '--', 'color': 'red', 'linewidth': 2}
plt.plot(x, y, **line_props)
linestyleパラメータは、plt.plot()
だけでなく、ax.plot()
、plt.axhline()
、plt.axvline()
、plt.grid()
など、線を描画する多くの関数で使用できます。
基本の線の種類
matplotlibでは、基本的な線のスタイルとして「solid(実線)」「dashed(破線)」「dashdot(一点鎖線)」「dotted(点線)」「None(線なし)」が用意されています。これらは文字列で簡単に指定できます。
以下のコードは基本的な線のスタイルを表示する例です。
import matplotlib.pyplot as plt
import numpy as np
# データの準備
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(8, 5))
# 基本的な線のスタイルを表示
line_styles = ['-', '--', '-.', ':', 'None']
labels = ['solid', 'dashed', 'dashdot', 'dotted', 'None']
for i, (ls, label) in enumerate(zip(line_styles, labels)):
ax.plot(x, np.sin(x) + i, linestyle=ls, linewidth=2, label=label)
ax.set_title('Basic Line Styles')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.legend()
plt.tight_layout()
plt.show()
# 出力: 5種類の異なる線スタイルを持つグラフが表示される

線のスタイルは以下の短縮形でも指定できます。
スタイル名 | 文字列表記 | 短縮形 |
---|---|---|
solid | ‘solid’ | ‘-‘ |
dashed | ‘dashed’ | ‘–‘ |
dashdot | ‘dashdot’ | ‘-.’ |
dotted | ‘dotted’ | ‘:’ |
None | ‘None’ | ” |
任意の線の種類
基本的な線のスタイル以外にも、カスタム線スタイルを定義できます。カスタム線スタイルはタプルで指定します。
カスタム線スタイルの形式は (offset, (on, off, on, off, ...))
です。
offset
: 線のパターンの開始位置をずらす値on
: 線を描画する長さoff
: 線を描画しない長さ
以下のコードはカスタム線スタイルの例です。
import matplotlib.pyplot as plt
import numpy as np
# データの準備
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(8, 5))
# カスタム線スタイルの定義
custom_styles = [
(0, (1, 1)), # 点線(短い)
(0, (1, 2)), # 点線(長い)
(0, (3, 1, 1, 1)), # 破線と点線の組み合わせ
(0, (5, 1)), # 長い破線
(0, (3, 5, 1, 5)) # 破線と点線の複雑な組み合わせ
]
# カスタム線スタイルを表示
for i, ls in enumerate(custom_styles):
ax.plot(x, np.sin(x) + i, linestyle=ls, linewidth=2,
label=f'Custom {i+1}')
ax.set_title('Custom Line Styles')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.legend()
plt.tight_layout()
plt.show()
# 出力: 5種類のカスタム線スタイルを持つグラフが表示される

実践的な使用例
複数のデータセットを1つのグラフに表示する場合、線のスタイルを変えることでデータの区別がしやすくなります。以下は実際の使用例です。
import matplotlib.pyplot as plt
import numpy as np
# データの準備
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(8, 5))
# 異なる線スタイルを使用して複数のデータを表示
ax.plot(x, np.sin(x), linestyle='-', color='blue', label='sin(x)')
ax.plot(x, np.cos(x), linestyle='--', color='red', label='cos(x)')
ax.plot(x, np.sin(x) * np.cos(x), linestyle='-.', color='green', label='sin(x)*cos(x)')
ax.plot(x, np.sin(x) + np.cos(x), linestyle=':', color='purple', label='sin(x)+cos(x)')
ax.set_title('Trigonometric Functions')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.grid(True, linestyle='--', alpha=0.7)
ax.legend()
plt.tight_layout()
plt.show()
# 出力: 4つの三角関数を異なる線スタイルで表示したグラフ

線のスタイルと色の組み合わせ
線のスタイルと色を組み合わせることで、より多くのデータを区別しやすく表示できます。
import matplotlib.pyplot as plt
import numpy as np
# データの準備
x = np.linspace(0, 10, 100)
fig, ax = plt.subplots(figsize=(8, 5))
# 線のスタイルと色の組み合わせ
styles = ['-', '--', '-.', ':']
colors = ['blue', 'red', 'green', 'purple']
for i, (style, color) in enumerate(zip(styles, colors)):
ax.plot(x, np.sin(x + i*np.pi/4),
linestyle=style,
color=color,
linewidth=2,
label=f'Phase {i}')
ax.set_title('Line Styles and Colors')
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.grid(True, alpha=0.3)
ax.legend()
plt.tight_layout()
plt.show()
# 出力: 異なる位相の正弦波を異なる線スタイルと色で表示したグラフ

まとめ
matplotlibの線スタイル設定は、データの視覚化において重要な役割を果たします。基本的な線スタイル(実線、破線、点線など)からカスタム線スタイルまで、様々な表現が可能です。
- 基本的な線スタイルは文字列(’-‘, ‘–‘, ‘-.’, ‘:’)で簡単に指定できる
- カスタム線スタイルはタプル形式 (offset, (on, off, …)) で詳細に制御できる
- 線のスタイルと色を組み合わせることで、多くのデータを区別しやすく表示できる
適切な線スタイルを選択することで、データの傾向や違いをより明確に伝えることができます。