[matplotlib] 126. 目盛り模様のあるラインによるプロット:基本と応用

matplotlib

はじめに

TickedStrokeを使うと、線に沿って目盛りを追加して、片側をバリアとしてマークすることができる。目盛りの角度、間隔、長さを制御できます。目盛りは凡例にも適切に表示されます。

コード&解説

モジュールのインポート

バージョン

基本的なプロット

MatplotlibのTickedStrokeは、プロットの線に沿って規則的な目盛りパターンを追加する機能です。これにより、データの境界や特定の領域を視覚的に強調することができます。

このコードはTickedStrokeを使って線に目盛りパターンを追加する基本的な実装例です。

  • データの作成: np.linspace()を使って0から2πまでの100点を生成し、正弦・余弦関数でx, y座標を計算して円を描くデータを作成しています。
  • プロット作成: まず通常の線(円)をプロットし、次に半径が半分の円をTickedStrokeを適用して描画しています。
  • TickedStrokeの適用: path_effects=[TickedStroke(spacing=10, angle=45)]の部分が重要で、これにより線に沿って10ピクセル間隔、45度の角度で目盛りが追加されます。
  • 視覚的な区別: 通常の線は青色(デフォルト)、目盛り付きの線は赤色で描画され、凡例で区別されています。
  • 仕上げ: グリッド表示、凡例の追加、タイトル設定、レイアウト調整をして見やすくしています。

パラメータのカスタマイズ

ここではTickedStrokeの様々なパラメータが視覚的にどのように表示されるかを比較検討しました。

  • サブプロットの設定: fig, axs = plt.subplots(2, 2, figsize=(10, 8))で2×2の合計4つのサブプロットを作成し、axs.flatten()で配列を1次元に変換しています。
  • 異なるパラメータの実験: 4つの異なるサブプロットでTickedStrokeの主要パラメータを試しています:
  • サブプロット1: spacing=5 – 目盛りの間隔を5ピクセルに設定
  • サブプロット2: angle=90 – 目盛りの角度を90度に設定
  • サブプロット3: length=5 – 目盛りの長さを5ピクセルに設定
  • サブプロット4: 複数のパラメータを組み合わせ(間隔15、角度135度、長さ7)
  • 視覚的区別: 各サブプロットに異なる色(青、赤、緑、紫)を使用して視覚的に区別しています。
  • 仕上げ: すべてのサブプロットにグリッドを表示し、tight_layout()でレイアウトを最適化しています。

応用例

境界線の表示

目盛り付きの線は、特定の領域の境界を明確に示すのに役立ちます。

データと閾値の設定

0から10までの範囲で100点のデータポイントを生成し、安全閾値(7.5)と危険閾値(5.0)を定義しています。

領域の色分け

axhspan関数を使って3つの領域(安全、注意、危険)を色分けしています。

目盛り付き境界線の作成

ここが最も重要な部分です。axhline関数で水平線を引き、path_effectsパラメータにTickedStrokeを適用することで目盛り付きの境界線を作成しています。間隔は10ピクセル、角度は135度に設定されています。

データプロットによる視覚化

減少傾向の基本関数に正弦波とランダムノイズを加えたデータを青線でプロットし、軸ラベル、タイトル、凡例、グリッドを設定して視覚化を完成させています。

このコードの特徴は、単なるデータプロットだけでなく、TickedStrokeを使って安全・危険の閾値を明確に視覚化している点です。これにより、測定値がどの領域にあるかが一目で分かりやすくなっています。

地図上での制限区域の表示

制限区域の定義

matplotlib.pathモジュールのPathクラスを使って多角形の制限区域を定義しています。

制限区域の塗りつぶし

定義したパスをPatcカッチとして作成し、半透明の赤色で塗りつぶしています。

目盛り付き境界線の作成(重要ポイント)

ここが最も重要な部分です。制限区域のパスを閉じたパスに変換し、TickedStrokeエフェクトを適用した境界線を作成しています。spacing=5で目盛りの間隔、angle=90で目盛りの角度、length=3で目盛りの長さを設定しています。

安全経路の追加

制限区域を避ける安全経路を青い線で表示し、各ポイントをマーカーで強調しています。

このコードの特徴は、TickedStrokeを使って制限区域の境界線に目盛りを付け、視覚的に「立ち入り禁止」の印象を強めている点です。地図やセキュリティ関連の視覚化に非常に効果的なテクニックです。

コードをダウンロード(.pyファイル)

コードをダウンロード(.ipynbファイル)

まとめ

MatplotlibのTickedStroke機能を使用すると、プロットに目盛り付きの線を追加することができ、以下のような利点があります:

  • 境界や閾値を視覚的に強調することができる
  • 線のスタイルに変化を持たせることで、情報の区別がしやすくなる
  • 特に安全領域と危険領域の区分けなど、重要な境界線の表示に適している
  • 地図、科学データ、工学的な図面など、多くの分野で応用可能

目盛り付きの線は、単なる装飾以上の役割を果たし、データの解釈や視覚的な伝達力を高める重要なツールとなります。

参考

Lines with a ticked patheffect — Matplotlib 3.10.5 documentation
matplotlib.patheffects — Matplotlib 3.10.5 documentation

コメント