matplotlibのlinestyleの設定を解説

Python

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, …)) で詳細に制御できる
  • 線のスタイルと色を組み合わせることで、多くのデータを区別しやすく表示できる

適切な線スタイルを選択することで、データの傾向や違いをより明確に伝えることができます。

タイトルとURLをコピーしました