プロット作成
実験や計算で得られたデータを図にし,内容を分かりやすく伝えるための基本的な考え方を説明します.
目次
プロットは,数値データを図にして傾向や関係を読み取るための方法です.実験結果,シミュレーション結果,ログデータなどは,数値の表だけでは全体像をつかみにくいことがあります.線グラフ,散布図,ヒストグラム,等高線図などにすると,変化の傾向や外れ値を確認しやすくなります.
私は,仕事柄さまざまなプロット作成ソフトウェアを使ってきました.以前は gnuplot を使うことが多く,現在は Python と組み合わせて Matplotlib を使う場面が増えています.このページでは,使い方を忘れないためのメモに加えて,プロットの描き方の基本と代表的なソフトウェアの特徴を整理します.
プロットで重要なのは,きれいな図を作ることだけではありません.軸の意味,単位,凡例,データの処理方法,出力形式が明確であることが大切です.これらがそろっていれば,後から見直したときにも,図の意味を正しく理解できます.
図を作る前に,この図で見せたいことを 1 文で決めます.たとえば,「温度を上げると抵抗が下がる」「計算値と実験値が一致する」のように,読み手に見てほしい関係を先に決めます.目的が決まると,プロット種,軸,範囲,凡例の選び方がぶれにくくなります.
初心者は,最初から凝った図を作ろうとせず,「軸が分かる」「単位が分かる」「どのデータが何か分かる」「本文で主張したい傾向が見える」の 4 点を満たすことを目標にします.最初の段階では,凝った配色や装飾よりも,読み手が迷わず読める図を優先します.たまに,解像度の悪いラスター図 (例: jpeg) のプロットを MS Word に張り付けた論文で,軸タイトルなどが読めないものに遭遇します.このようなプロットは論外です.
プロットは,データをきれいに飾るためではなく,読み手がデータの意味を正しく読み取るために作ります.最初に「何を横軸に置くか」「何を縦軸に置くか」「どの差や傾向を見せたいか」を決めると,軸,線,色,凡例の選び方が自然に決まります.
参考サイト
以下は,物理・科学技術系のプロット作成で参考になる資料です.規格や投稿規定を最初から全部読む必要はありませんが,単位,軸ラベル,不確かさ,投稿用図版の確認先として役立ちます.実際にレポート,論文,発表資料などを提出・投稿する場合は,投稿する学会,学術誌,団体,授業などの規定を優先します.
プロットの描き方の指針
プロット本体(図)
ここでは,実際に図を描くときの基本的な書き方を示します.すべての図で同じ形にする必要はありませんが,軸,線,点,色,凡例,誤差棒の役割を決めてから描くと,読み手に伝わりやすい図になります.
| 項目 |
書き方の指針 |
例・注意 |
筆者基準 |
| タイトル |
論文や技術レポートでは,図の中に大きなタイトルを入れるより,図番号とキャプションで説明する方が一般的です.発表スライドでは短いタイトルを付けてもかまいません. |
|
キャプションや軸タイトルで明確な場合は,書かない. |
| プロット種 |
2 つの量の関係を見るときは散布図を基本にします.時間変化や連続的な変化を見せるときは線グラフ,値の分布を見せるときはヒストグラム,分類ごとの大きさを比べるときは棒グラフを使います. |
測定点が独立なら散布図,連続した測定なら線グラフが基本です. |
| 軸ラベル |
横軸と縦軸には,物理量の名前または記号と単位を書きます.量記号を使う場合は,本文や式で使っている記号とそろえます. |
例: 時間 / s,温度 / K,運動エネルギー / eV. |
フォント: sans serif, 14 pt.時間 [s], 温度 [K], 力 [kg·m/s2] or [kg·m·s-2] |
| 軸範囲 |
データ全体が見える範囲を基本にし,見せたい変化が分かるように余白を少し入れます.変化を大きく見せるためだけに範囲を切り詰めてはいけません. |
軸を途中から始める場合は,誤解を生まないか確認します. |
| 目盛り |
目盛りは読みやすい間隔にします.細かすぎる目盛りや,小数点以下が長すぎる数字は避けます.値が何桁も変わる場合は,対数軸を検討します. |
|
数値フォント: sans serif, 12 pt.目盛り線は長め.灰色点線のグリッド有り. |
| データ点 |
測定値はマーカーで示します.マーカーは大きすぎても小さすぎても読みにくくなるため,最終的な図の大きさで見えるサイズにします. |
|
| 線 |
理論曲線,フィット曲線,補助線は線で示します.測定点を結ぶ線は,時間順や測定順に意味がある場合に使います. |
点が測定値,線がモデルやフィットであることを凡例やキャプションで分かるようにします. |
| 色と線種 |
色だけでデータを区別しないようにします.色に加えて,線種,マーカーの形,ラベルも変えます.白黒印刷や色覚多様性でも読める組み合わせにします. |
赤と緑だけの区別,薄い黄色,背景に近い色は避けます. |
彩度の高い色を選択します.R: (0, 0, 255), B: (0, 0, 255) が優先.G: (0, 128, 0) は少し暗くします.matplotlib の色を使います. |
| 凡例 |
複数の線や点がある場合に凡例を付けます.凡例はデータを隠さない位置に置きます.曲線の近くに直接ラベルを置ける場合は,凡例より分かりやすくなることがあります. |
1 本だけの曲線では,凡例より軸ラベルやキャプションを丁寧に書きます. |
フォント: sans serif, 10 pt.色は対応するデータと一致. |
| 誤差棒 |
誤差棒は,測定値のばらつきや不確かさを示す必要があるときに付けます.誤差棒が何を表すかは,図中ではなくキャプションや本文で説明します. |
|
注意
処理済みデータ
規格化,オフセット,平均化,平滑化,フィルター,外れ値の除外を行った場合は,軸ラベル,凡例,キャプションのどこかで分かるようにします.
文字と余白
軸ラベル,目盛り,凡例の文字は,最終的な表示サイズで読める大きさにします.図の外側や内側に余白を入れ,文字や凡例がデータに重ならないようにします.
印刷用の小さな図では,画面上で読めても印刷後に読めないことがあります.印刷する場合は,8 pt 以上を勧めます.印刷しない場合は,ベクター図ならば小さくても読めますが,特別です.
電子ファイル出力形式
電子ファイルの場合,PDF,EPS,SVG などのベクトル形式を強く勧めます.MS Office 系のソフトウェアー (Word, PowerPoint) では,SVG 形式のファイルの挿入が可能です.
キャプションの書き方
キャプションは,図を本文から切り離して見ても,何を示す図なのか分かるように書きます.最初の文で図の内容を簡潔に述べ,必要に応じて測定条件,線やマーカーの意味,誤差棒の意味,規格化や平滑化などの処理を書きます.
- 図の主題: 横軸と縦軸の依存性,比較内容,分布内容などのプロットの意味を記述する.
- 線や点の意味: 点は測定値,実線はフィット,破線は理論値,などを説明する.
- 誤差棒: 誤差棒が示す内容 (標準偏差,標準誤差,不確かさ,信頼区間など)を示す.
- 処理: 規格化,オフセット,平均化,平滑化,外れ値除去を行った場合は明記する.
例: 「抵抗の温度依存性.点は測定値,実線は最小二乗フィットを表す.誤差棒は 1 $\sigma$ の標準不確かさである.」のように書くと,図の内容,データ系列,誤差棒の意味が読み手に伝わります.
代表的なプロット作成ソフトウェアを,主な用途で整理します.ここでの分類は目安です.実際には,扱うデータ,利用できる環境,出力したい形式に合わせて選びます.
| ソフトウェア |
向いている用途 |
特徴 |
外部呼出 |
スクリプト |
費用 |
| gnuplot |
コマンドやスクリプトで,2 次元・3 次元グラフを素早く作る用途. |
軽量で,多くの出力形式に対応しています.対話的な確認にも,バッチ処理にも使えます. |
可 |
可 |
free |
| Matplotlib |
Python で数値計算やデータ解析を行い,そのまま図を作る用途. |
NumPy や pandas と組み合わせやすく,静的な図,対話的な図,アニメーションを作成できます. |
可 |
可 |
free |
| Plotly |
WEB ブラウザー上で操作できる対話的なグラフを作る用途. |
拡大,縮小,点の情報表示などを使えるため,データを探索しながら説明する場面に向いています. |
可 |
可 |
free (OSS) |
| Excel |
表計算ソフト上で,簡単なデータ整理やグラフ作成を行う用途. |
操作は簡単ですが,科学技術向けの図作成ソフトではありません.技術レポートや学術論文,学位論文に載せる図では,書式の細かな制御や再現性の面で注意が必要です. |
限定的 |
可 (VBA 等) |
有料 (Web 版は free あり) |
| KaleidaGraph |
GUI 操作で,測定データから 2 次元グラフや曲線フィットを作成. |
科学技術分野で長く使われる商用ソフトで,操作が分かりやすく,統計処理も行えます. |
限定的 |
可 (マクロ) |
有料 |
| Igor Pro |
実験データの解析,グラフ作成,フィッティング,信号処理を行う. |
独自のデータ構造とプログラミング機能を持ち,測定・解析の自動化に向いています. |
可 |
可 |
有料 |
| ROOT |
C++/Python から大規模データの解析やヒストグラム作成を行う. |
CERN 由来の解析フレームワークで,高エネルギー物理などの統計解析・可視化でよく使われます. |
可 |
可 |
free (OSS) |
| PGPLOT |
Fortran や C の既存プログラムから,研究用の図を出力する用途. |
古くから使われている科学技術計算向けのグラフィックライブラリです.新規作成よりも,既存資産の保守で重要になることがあります. |
可 |
不可 |
free (非商用) |
「外部呼出」は,別のプログラムやバッチ処理から作図を実行しやすいかを示します.「限定的」は,機能はあっても環境依存や GUI 操作への依存が大きい場合です.
Excel のような表計算ソフトでも簡単なグラフを作れます.ただし,処理手順の再現性や大量の図の自動作成が必要な場合は,gnuplot や Python など,スクリプトで管理できる方法が向いています.
多くのソフトウェアを横断して比較したい場合は,松田七美男氏の「データの可視化と解析ツール」が参考になります.同じ例題を複数のソフトウェアで描いているため,出力の違いや操作感を比べやすくなっています.
図を公開する前には,次の点を確認します.図は文章よりも強い印象を与えるため,軸や単位の誤りがあると,読み手に誤った理解を与えてしまいます.
- 軸名,単位,凡例が明確である.
- データの前処理,フィルター,規格化の有無を説明できる.
- 軸の範囲を不自然に切り詰めて,変化を過大に見せていない.
- 複数の線や点を使う場合,色だけでなく線種やマーカーでも区別できる.
- WEB 用,印刷用,発表用など,目的に合った解像度と出力形式になっている.
- 図のファイル名,作成スクリプト,元データの対応が分かるように保存している.
図だけで意味が伝わらない場合は,本文で補足します.反対に,本文で長く説明している内容が図にすると分かりやすい場合は,図や表を追加します.読み手が短い時間で要点をつかめることが,よいプロットの条件です.