はじめに
論文や技術系の記事で使われるグラフでは、色だけでなくマーカーの形も変えてデータを区別することがあります。これは単なるデザインではなく、データの識別性を向上させるための重要な工夫です。
自分で論文の図を作成する中で「データ点が重なるときにマーカーの形を変えると視認性が向上する」という気づきがあったため、その理由と実装例を紹介します。
なぜ「色+マーカー」を使うのか?
1. 色だけでは区別しにくい場合がある
色は違いを示すのに便利ですが、赤と緑などは色覚異常の方には区別が難しい場合があります。青とオレンジ、紫と黄色のような組み合わせは、色相や明度差が大きいため、より認識しやすくなります。色覚異常者向けのカラーパレットについては以下の記事が参考になります。
2. データ点が重なるときの視認性向上
異なる年の観測データなど、同じ座標に複数のデータ点が重なる場合、色だけでは区別しづらくなります。マーカーの形を変えれば、データが重なっていても識別しやすくなります。
Python(matplotlib)での実装例
以下は、異なる年代のデータを「色」と「マーカーの形」の両方で区別した例です。
import matplotlib.pyplot as plt
# データ(観測年・X座標・Y座標)
years = [2010, 2015, 2020]
x_values_list = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
y_values = [0, 0, 0]
markers = ['o', '*', '^']
plt.figure(figsize=(6, 4))
# 各データセットをマーカーのみでプロット
for i in range(len(years)):
plt.scatter(x_values_list[i], y_values, marker=markers[i], label=f'{years[i]}')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(title='year')
plt.show()
このように色だけでなくマーカーの形を変えることで、データが重なっていても区別しやすくなります。
補足:エラーバーが重なるときの対策
エラーバーを追加すると、データ点が密集している場合に見えにくくなることがあります。その場合、以下のような工夫が有効です。
- キャップ (
capsize
) を調整して端を見やすくする - 透明度 (
alpha
) を下げて重なりを軽減する - データを少し横にずらして重なりを避ける。ただし、オフセットを入れることで本来のデータの特徴が変化する可能性があり、その意図と適用したオフセット値を入れた方が良い場合もあります。
import matplotlib.pyplot as plt
# データ(観測年・X座標・Y座標)
years = [2010, 2015, 2020]
x_values_list = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
y_values = [0, 0, 0]
markers = ['o', '*', '^']
plt.figure(figsize=(6, 4))
# 各データセットをマーカーのみでプロット
for i in range(len(years)):
plt.errorbar(x_values_list[i], y_values, yerr=[0.2, 0.3, 0.1], fmt=markers[i], capsize=5, alpha=0.7, label=f'{years[i]}')
plt.xlabel('x')
plt.ylabel('y')
plt.legend(title='year')
plt.show()
キャップサイズを調整することでエラー範囲を明確にし、透明度を調整することで重なったマーカーの識別が容易になります。これにより、視認性が向上し、データの読み取りがしやすくなります。
まとめ
- データが重なるときは色だけでなくマーカーの形で区別
- エラーバーはキャップや透明度を調整すると見やすくなる
グラフのデザインは、情報を視覚的に伝えやすくするために重要です。論文のグラフには著者の意図や工夫が反映されることが多いため、そうした視点で読み解くと新たな発見があるかもしれません。