組み込み開発のためのPython · レッスン 134 / 238
Matplotlib Labels:軸ラベルとタイトルを付ける
軸ラベルには変数名だけでなく読み手が理解できる名称と単位を含めます。タイトルや凡例は図だけを見ても条件が伝わるよう具体的にします。
軸ラベルには変数名だけでなく読み手が理解できる名称と単位を含めます。タイトルや凡例は図だけを見ても条件が伝わるよう具体的にします。 仕組みだけでなく、検証方法と運用上の注意も具体例で確認します。
ラベルが図の意味を支える
グラフのラベルは飾りではなく、データの意味や単位を読み手へ伝えるための重要な要素です。軸名がない図は、値の大きさや比較対象を正しく解釈できません。測定量、単位、時間範囲、条件などを必要に応じて含め、図単独で共有されても意味が分かる状態を目指します。ラベルに説明を詰め込みすぎると重なりや視認性の低下につながるため、詳細はキャプションに分けてください。使用する用語や単位の表記を本文と統一し、図だけ異なる略語や記号を使わないようにします。
xlabelとylabelを設定する
Axesのset_xlabelとset_ylabelを使い、横軸と縦軸に意味のある名称を指定します。測定値なら「温度 (°C)」のように量と単位を一緒に示すと、読み手が数値の桁や比較を判断しやすくなります。単位がない比率や件数でも、何を数えたかを具体的に書きます。略称を使う場合、一般に知られているか、凡例や説明で定義されているか確認してください。軸名が長い場合は改行や回転で配置を整えますが、文字の向きを変えすぎて読みにくくならないようにします。出力画像を開き、ラベルの切れや重なりを確認しましょう。
タイトルに必要な背景を含める
タイトルは図の対象や主要な条件を短く伝えます。例えば対象の装置や測定項目を示し、細かな試験条件、版、環境などはキャプションや本文へ分けます。図を作るコードの中に固定タイトルを埋め込むと、別データでも同じ説明が使われることがあります。タイトルを関数引数にする、入力データのメタデータから生成するなど、図の対象と説明がずれない仕組みを考えてください。日付や機器名を表示する場合は、実際の入力と一致することを検証し、秘密情報や内部識別子を不用意に公開しないようにします。タイトルだけに依存せず、軸と凡例も整えます。
凡例と系列ラベルの整合
複数系列を描くときは、各plotへlabelを指定しlegendを表示します。凡例名は線の色やマーカーだけでなく、条件やデータの意味を説明する必要があります。「系列1」「系列2」のような名称は、図を見た人が元データを知らなければ区別できません。条件に数値を含める場合は単位を明記し、長い文章を凡例へ詰めず説明文と役割を分けます。線を追加・削除したときに凡例だけ古い状態のままにならないよう、描画対象から自動生成する方法を使います。凡例の順序を変えた場合は、図中の系列と読み方が一致することを確認します。
注釈で重要な事象を示す
annotateやtextを使うと、しきい値、イベント、異常値などを図中で説明できます。注釈は読み手の注意を向ける一方、過度に追加すると系列や軸を覆ってしまいます。何を強調するのかを明確にし、矢印の先と説明文の対応が分かる配置にします。注釈の位置をデータ座標で指定するか、Axes上の相対位置で固定するかは、軸範囲変更後も意図した場所に表示されるかを考えて選びます。注釈が事実なのか解釈なのかを区別し、値を示す場合は元データと一致するか検証してください。自動生成するラベルが重ならないことも代表データで試験します。
数式、記号、日本語フォント
単位や技術文書には上付き、下付き、ギリシャ文字などを使う場合があります。Matplotlibは数式表記やUnicode文字を描画できますが、フォントやバックエンドによって字形が欠けることがあります。環境に依存しない図を配布するなら、出力環境で日本語と特殊文字が正しく表示されているか確認してください。ラベル内で別の表記方式を混在させると、記号のサイズや字体が揃わず読みづらくなります。コードやデバイス識別子など大文字小文字が意味を持つ文字列は、自動整形で変更しないようにします。PDFやSVGへ保存する場合もフォント埋め込みや利用条件を確認します。
文字サイズ、余白、レイアウト
fontsizeはタイトル、軸ラベル、目盛り、凡例の文字サイズを調整します。階層を付けると重要な情報と補助的な情報を区別できますが、極端に小さな文字や大きな見出しは避けます。Figureのサイズやサブプロット数に対してラベルが収まるよう、tight_layoutやconstrained_layoutを活用できます。レイアウト機能がすべての文字配置を解決するわけではないため、出力を確認してください。図の縦横比を変えると線の傾きやデータの印象が変わることがあります。複数図の比較では寸法とフォントサイズをそろえ、意図しない切り詰めがないことを検査します。
目盛りの書式と桁数
目盛りラベルは数値の単位、精度、桁数を伝えます。小数点以下の桁を増やしすぎると実際の測定精度以上の確かさを示すように見え、少なすぎると重要な差を隠すことがあります。科学表記やカスタムFormatterを使う場合、軸全体で一貫した書式にしてください。日時の目盛りは範囲や間隔に合わせ、ラベルの重なりを避けます。桁区切りや小数点の地域設定も読み手に合わせます。表示値を丸めても内部データの精度は変わらないため、図の表示桁と解析の計算値を混同せず、値の扱いを説明します。
単位と測定条件を揃える
同じ図に複数の系列を載せるとき、同じ軸は同じ量と単位を表すべきです。電圧と温度のように異なる単位を左右の軸へ配置する方法は見た目が分かりやすくても、二つの変化が対応するような印象を強めることがあります。必要性を十分に検討し、使う場合は両軸を明確に表示して対応関係を説明してください。単位換算を行った場合は換算後の値が正しいか検証し、ラベルの単位を更新します。測定条件や機器設定が異なる系列を比較するなら、条件も凡例やキャプションに含め、差が単位の違いによるものではないことを確認します。
アクセシビリティと読みやすさ
図の文字は画面や印刷で読める大きさにし、色だけで意味を伝えないようにします。タイトルや軸ラベルの情報は、図の説明文や代替テキストにも必要に応じて含めてください。スクリーンリーダー利用者が画像の内容を把握できるよう、ページ側に図が示す重要な傾向とデータの概要を記述します。高コントラストの組み合わせを選び、色覚の異なる人やグレースケール印刷でも系列が区別できるか試します。画面幅を狭くしたときにラベルが切れないか、拡大しても文字が潰れないか確認しましょう。装飾的な文字より、意味とデータの正確さを優先します。
ラベルの自動生成と安全性
大量の図を自動生成するときは、列名や設定値からタイトルや軸ラベルを作る場合があります。入力データの文字列に改行やHTMLに見える文字が含まれても、表示内容が意図しない形に変わらないようにします。ファイル名や公開ページに識別情報を含める場合は、機密性と個人情報を確認してください。自動ラベルの長さを制限し、文字が図の外へはみ出さないようにします。条件の単位や設定値が変わったのに古いラベルを使うと誤った報告になります。グラフを生成した後に、入力条件とラベルの対応をテストし、代表的な長い文字列や日本語を含むケースも確認します。
練習課題:単位の伝わる図を作る
三つのチャンネルの電圧を時刻に対して描き、明確なタイトル、軸ラベル、単位、条件を示す凡例を付けてください。サンプル数、測定期間、欠損件数をキャプションへ記載し、注釈を加える場合は対象点と元データが一致するか検査します。日本語フォントを含むPNGとPDFを出力し、文字の欠落、余白、目盛りの桁数を確認します。画面を縮小し、白黒でも系列を見分けられるか試します。最後に、図だけで読み手が誤解しないか別の人に確認してもらい、修正理由を記録してください。表示した数字が測定精度を超えていないことも確かめます。
コード例
手元のPython環境に貼り付ける前に、使用しているPythonの版と対象ライブラリの対応を確認してください。
import matplotlib.pyplot as plt
fig, ax = plt.subplots()
ax.plot([0, 1, 2], [3.2, 3.3, 3.1])
ax.set(title="電源電圧の測定", xlabel="時間 (s)", ylabel="電圧 (V)")
plt.show()手を動かす課題
同じ図に測定対象、期間、単位を含むラベルを付け、画面幅が狭くても読める配置にしてください。