組み込み開発のためのPython · レッスン 133 / 238

Matplotlib Line:線の表示を調整する

線の色、幅、スタイルは系列の識別を助けます。強調のために軸範囲を切り詰めると差を過大に見せる場合があるため、範囲の根拠を示します。

線の色、幅、スタイルは系列の識別を助けます。強調のために軸範囲を切り詰めると差を過大に見せる場合があるため、範囲の根拠を示します。 仕組みだけでなく、検証方法と運用上の注意も具体例で確認します。

線のスタイルが表す情報

Matplotlibの線スタイルは系列の識別や強調に使えます。色、幅、実線・破線などを組み合わせると複数条件を区別できますが、見た目の違いに意味を持たせる場合は凡例や説明で伝えてください。線幅を大きくすると強調され、測定結果の重要度や確実性が高いように見えることがあります。線の装飾とデータの意味を混同しないようにし、図全体で一貫したルールを使います。表示先の大きさ、解像度、背景、印刷方法を確認してから適切なスタイルを選び、最終出力で確認しましょう。

色とコントラスト

colorやc引数で線色を指定できます。背景とのコントラストを十分に取り、近い色を複数系列に使わないようにします。赤と緑の組合せだけで状態を区別すると、色覚の違いや白黒印刷で判別しにくくなる場合があります。線種、marker、ラベルを併用し、色がなくても意味を伝えられる図にしましょう。カラーマップを利用する場合は、色の変化が順序や差を適切に表すか選択し、定性的なカテゴリに連続カラーマップを当てないようにします。系列の色に意味を持たせたなら、他の図でも同じ意味を維持してください。

線幅と強調の度合い

linewidthまたはlwは線の太さを調整します。重要な基準値を少し太くすることは有効ですが、太い線を使いすぎると系列が重なり、細かな変化が隠れます。出力のdpiや図の幅によって見え方が変わるため、画面上の設定だけで判断せず保存画像を確認してください。線幅の差で測定値自体の大きさを表す場合は、尺度や凡例を説明します。通常の系列表示では、値の意味と線幅を独立させる方が誤解を防ぎやすくなります。複数図を比較するときは幅を統一し、特定図だけ過度に目立たせていないかレビューします。

実線、破線、点線を選ぶ

linestyleは実線、破線、点線などの表示を指定します。異なる条件を色以外で区別する際に有効ですが、破線の間隔が短いと縮小表示で点線に見えることがあります。線種を多数使うと読み手が凡例と照合しにくくなるため、系列数を整理するか図を分けることを検討してください。独自の破線パターンを指定する機能もありますが、配布資料や異なるバックエンドで同じ見た目になるか確認が必要です。線種の組合せはプロジェクト内で統一し、既存の色やmarkerと一緒に見ても判別できるか実際の図でテストします。

透明度alphaの影響

alphaは線やmarkerの不透明度を調整します。大量の系列が重なる図では透明度を下げると重なりを見せやすくなることがあります。一方、透明な色は背景色や他系列の色と混ざり、元のカテゴリ色とは異なる色として表示されます。透明度が低い線は縮小や印刷で消えるおそれがあるため、必要な情報が残るか確認してください。密度を表すためにalphaを使う場合、線の重なりとデータの件数が比例しているか、描画順による見え方の偏りがないか考えます。透明度は視覚的な強調にも影響するので、主張を過度に強めたり弱めたりしないようにします。

描画順zorderと重なり

複数の線やAxes要素が重なる場合、zorderで描画順を調整できます。基準線を背面へ置き、注目する系列を前面に出すと見やすくなる場合があります。前面の線が背面系列を隠すこともあるため、表示順を変えたときにデータの欠落や重要度の誤解が生じないか確認します。半透明の線や塗りつぶしは描画順によって色が変わる場合があります。zorderを設定する前に、線が重なる理由を調査し、必要なら異なるAxesや小分割図へ分離してください。描画順は視覚表現の制御であり、データの順序や時間的な前後関係を変えるものではありません。

ステップ状の線と階段描画

drawstyleを使うと、隣り合う値を段差状に描けます。デジタル信号や設定値の保持を表す場合は、値が一定期間変化しないという意味に合うことがあります。通常の線形補間でつなぐと存在しない中間値を示すため、データの取得や保持方法を理解して描画形式を選びます。stepの段差を前、中央、後のどこへ置くかは、サンプル時刻の意味と合わせます。タイミングが重要なデータでは横軸の目盛り、サンプリング周期、遅延を図に示してください。表示された線の形だけから変化時刻を誤解されないよう、キャプションで仕様を補足します。

軸設定と線の見え方

線の傾きや変動の見え方は軸範囲と尺度に左右されます。ylimを狭めると小さな差が大きく見えることがあり、広げると変化が見えなくなる場合があります。複数の図を比較するときは、同じ尺度を使うか、異なる尺度であることを明示してください。対数軸では同じ線分の形が通常軸と異なる意味を持ち、ゼロや負の値は扱えません。軸範囲、目盛り、単位を図中で説明し、表示に含まれない値や期間を注記します。線のスタイルだけで傾向を強調せず、数値や統計的な評価も必要に応じて併記しましょう。

多系列と凡例の設計

複数の線を一つのAxesへ描くとき、色、線種、marker、ラベルを一貫させます。凡例が長くなりすぎる場合は、系列名を短くする、列数を調整する、図を分割する方法を考えます。凡例をAxes外へ置くと保存時に切れることがあるため、Figureの余白やbbox設定を確認してください。ラベルの重複や似た名前は、読み手が線を正しく識別できない原因になります。基準条件、実測値、推定値など種類が異なる系列は、意味が分かる名称と線種で区別しましょう。凡例と図上の描画順を確認し、誰でも同じ対応関係を読み取れるかレビューします。

高密度データと性能

線の点数が非常に多い場合、描画処理や画像の読み込みが遅くなります。表示幅よりはるかに細かい点をすべて描いても、画面上では区別できないことがあります。表示用に集約する場合は、平均だけでなく最小値や最大値を残して短時間のピークを隠さないようにする方法を検討してください。表示用のデータ変換と保存・分析用の元データを区別し、どの方法で集約したか記録します。線を間引いた後も異常検出や安全判断には元のデータを使います。実行時間、出力サイズ、代表区間の形を測定し、性能改善で重要情報を失っていないことを確認します。

エラーと描画結果を検証する

plotの引数の長さが異なる、数値でない値が含まれる、軸範囲が逆転しているなどの場合、描画が失敗したり想定外の図になったりします。例外メッセージを読み、入力配列と指定したスタイルを個別に確認してください。plotが戻すLine2Dオブジェクトから系列のラベルやデータを確認し、テストで描画内容を検証することもできます。画像を目視するテストと、数値データや設定を検査するテストを組み合わせます。エラーを空のFigureに置き換えて成功を装うと、古い結果や誤った図が配布される危険があります。保存成功と内容の正しさを別々に確認しましょう。

練習課題:線の表現を比較する

同じ時系列データを実線、破線、異なる幅、marker付きの図にし、それぞれがどの情報を目立たせるか比較します。三つの条件を色だけでなく線種でも区別し、白黒印刷でも凡例と一致することを確かめてください。軸範囲を変えた図も作り、差の印象が変化する理由を説明します。次に大きなデータを使い、全点描画と表示用集約を比較し、ピークが残っているか元データから検査します。Figureを保存して縮小表示し、線幅や点線が読めることを確認します。最後に、線の設定、データの処理、軸範囲を説明するキャプションを作成してください。

コード例

手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.plot([0, 1, 2], [1.0, 1.1, 1.2], color="navy", linewidth=2, linestyle="--")
ax.set_ylim(0.8, 1.4)
plt.show()

手を動かす課題

線のスタイルを変更し、軸範囲を自動設定した図と固定した図の見え方を比較してください。

参考資料

「Python Matplotlib」の章一覧へ