📋 このステップで学ぶこと
軸ラベルの設定(xlabel, ylabel)と重要性
タイトルの追加と効果的な書き方
凡例(legend)の配置と設定
テキスト注釈(text, annotate)の追加
矢印での強調表現
グリッド線の詳細設定
🏷️ 1. 軸ラベルの設定
なぜ軸ラベルが重要なのか
グラフを見たとき、最初に目に入るのはタイトル と軸ラベル です。軸ラベルがないグラフは、「この数字は何を表しているの?」という疑問を見る人に与えてしまいます。
例えば、Y軸に「100」「200」「300」という数字があっても、それが「万円」なのか「個」なのか「人」なのかわかりません。軸ラベルは、グラフの「翻訳機」 のような役割を果たします。
💡 身近な例で考えてみよう
温度計を想像してください。
軸ラベルがない温度計 :数字だけが表示されている → 「20」は何?摂氏?華氏?
軸ラベルがある温度計 :「°C」と表示されている → 「20°C」だとすぐわかる!
軸ラベルの基本
Matplotlibでは、xlabel() でX軸(横軸)のラベル、ylabel() でY軸(縦軸)のラベルを設定します。
📊 xlabel()とylabel()の基本構文
関数
役割
基本的な使い方
plt.xlabel()
X軸(横軸)にラベルをつける
plt.xlabel(‘月’)
plt.ylabel()
Y軸(縦軸)にラベルをつける
plt.ylabel(‘売上(万円)’)
基本的な軸ラベルの設定
まずは最もシンプルな軸ラベルの設定方法を見てみましょう。以下のコードを1行ずつ解説します。
【コードの構成】
# 1. ライブラリの読み込み
import matplotlib.pyplot as plt
# 2. データの準備
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’] ← X軸に使うデータ
sales = [100, 120, 150, 130, 160, 180] ← Y軸に使うデータ
# 3. グラフの作成
plt.figure(figsize=(10, 6)) ← グラフのサイズを指定
plt.plot(months, sales, marker=’o’) ← 折れ線グラフを描画
# 4. 軸ラベルの設定(★今回のポイント)
plt.xlabel(‘月’) ← X軸のラベル
plt.ylabel(‘売上(万円)’) ← Y軸のラベル
# 5. 表示
plt.show()
それでは実際に入力して実行してみましょう。以下のコードをGoogle Colabにコピー&ペーストしてください。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
# データ
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales = [100, 120, 150, 130, 160, 180]
plt.figure(figsize=(10, 6))
plt.plot(months, sales, marker=’o’, linewidth=2.5, color=’steelblue’)
# 軸ラベルの設定
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
# タイトル
plt.title(‘月別売上推移’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.show()
💡 軸ラベルのベストプラクティス
ポイント
悪い例
良い例
理由
単位を明記
売上
売上(万円)
数字だけでは何を表すかわからない
わかりやすく
Rev.
売上
略語は専門家以外にはわかりにくい
フォントサイズ
fontsize=8
fontsize=12〜14
小さすぎると読みにくい
軸ラベルの詳細設定
軸ラベルは、フォントサイズや色、太さなどを細かくカスタマイズできます。xlabel()とylabel()には、以下のようなオプション引数(パラメータ)があります。
📊 軸ラベルのオプション引数
引数
意味
使用例
効果
fontsize
文字の大きさ
fontsize=14
文字が大きくなり読みやすくなる
fontweight
文字の太さ
fontweight=’bold’
太字になり目立つ
color
文字の色
color=’darkblue’
指定した色に変わる
labelpad
軸からの距離
labelpad=10
ラベルと軸の間隔が広がる
詳細設定を使った軸ラベルの例を見てみましょう。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
plt.plot(x, y, marker=’o’, linewidth=2.5, color=’steelblue’)
# 詳細な軸ラベル設定
plt.xlabel(
‘時間(秒)’,
fontsize=14, # フォントサイズを14に
fontweight=’bold’, # 太字にする
color=’darkblue’, # 濃い青色にする
labelpad=10 # 軸から10ポイント離す
)
plt.ylabel(
‘距離(メートル)’,
fontsize=14,
fontweight=’bold’,
color=’darkgreen’, # 濃い緑色にする
labelpad=10
)
plt.title(‘時間と距離の関係’, fontsize=18, fontweight=’bold’, pad=20)
plt.grid(True, alpha=0.3)
plt.show()
📌 2. タイトルの設定
タイトルの役割と重要性
グラフのタイトルは、見る人が最初に読む情報 です。良いタイトルは、グラフを見る前に「何についてのグラフなのか」を瞬時に伝えます。
STEP 2で学んだように、タイトルは「何のグラフか」ではなく「何がわかるか」 を伝えるのがベストプラクティスです。
💡 タイトルの書き方のポイント
タイトルには2つのスタイルがあります。状況に応じて使い分けましょう。
スタイル
例
適した場面
説明型
「月別売上推移」
データ探索時、レポートの補足
結論型(推奨)
「2024年の売上は前年比20%増加」
プレゼン、経営報告、意思決定
title()関数の基本
Matplotlibでは、plt.title() 関数でタイトルを設定します。
【title()の基本構文】
plt.title(‘タイトルのテキスト’)
【よく使うオプション】
plt.title(
‘タイトルのテキスト’,
fontsize=16, # 文字サイズ(推奨: 16〜20)
fontweight=’bold’, # 太字にする
color=’darkblue’, # 文字色
pad=20, # グラフからの距離
loc=’left’ # 位置(’left’, ‘center’, ‘right’)
)
シンプルなタイトルの例を見てみましょう。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
plt.plot(x, y, marker=’o’, linewidth=2.5, color=’steelblue’)
# シンプルなタイトル
plt.title(‘売上推移グラフ’)
plt.grid(True, alpha=0.3)
plt.show()
タイトルの詳細設定
タイトルをもっとカスタマイズしてみましょう。以下のオプションを使うことで、プロフェッショナルな見た目になります。
📊 title()のオプション引数
引数
意味
使用例
効果
fontsize
文字の大きさ
fontsize=18
大きく目立つタイトルになる
fontweight
文字の太さ
fontweight=’bold’
太字で強調される
color
文字の色
color=’darkblue’
指定した色に変わる
pad
グラフからの距離
pad=20
タイトルが上に離れる
loc
タイトルの位置
loc=’left’
左寄せになる
詳細設定を使ったタイトルの例です。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
plt.plot(x, y, marker=’o’, linewidth=2.5, color=’steelblue’)
# 詳細なタイトル設定
plt.title(
‘2024年度 月別売上推移’,
fontsize=18, # フォントサイズを18に
fontweight=’bold’, # 太字にする
color=’darkblue’, # 濃い青色にする
pad=20, # グラフから20ポイント離す
loc=’left’ # 左寄せにする
)
plt.grid(True, alpha=0.3)
plt.show()
💡 loc引数の効果
loc引数でタイトルの位置を変更できます。
loc=’center’ :中央(デフォルト)
loc=’left’ :左寄せ(ビジネス資料で人気)
loc=’right’ :右寄せ
サブタイトル(副題)の追加
メインタイトルに加えて、補足情報をサブタイトルとして追加することがあります。Matplotlibには直接サブタイトルを設定する関数がないため、fig.text() を使って実現します。
【サブタイトルの仕組み】
fig.text(x, y, ‘テキスト’)
・x, y は図全体に対する位置(0〜1の範囲)
・x=0.5 なら横方向の中央
・y=0.88 なら縦方向の88%の位置(上の方)
【図の座標系】
(0,1)────────────(1,1)
│ │
│ タイトル位置 │
│ (0.5, 0.88) │
│ │
│ │
(0,0)────────────(1,0)
サブタイトルを追加した例を見てみましょう。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# figureとaxesを作成(fig.textを使うため)
fig, ax = plt.subplots(figsize=(10, 6))
ax.plot(x, y, marker=’o’, linewidth=2.5, color=’steelblue’)
# メインタイトル
ax.set_title(‘2024年度 月別売上推移’, fontsize=18, fontweight=’bold’, pad=20)
# サブタイトル(テキストとして追加)
fig.text(0.13, 0.88, ‘※前年比120%達成’, fontsize=11, color=’gray’, style=’italic’)
ax.grid(True, alpha=0.3)
plt.show()
🎨 3. 凡例(Legend)の設定
凡例とは何か
凡例(はんれい) とは、グラフに複数のデータ系列があるとき、「どの色・線が何を表しているか」 を説明する部分です。英語では「Legend(レジェンド)」と呼びます。
例えば、2023年と2024年の売上を同じグラフに表示する場合、青い線が2023年で、赤い線が2024年であることを示す必要があります。これが凡例の役割です。
💡 凡例の役割を地図で考える
地図の凡例を思い出してください。
青い線 = 川、緑の塗りつぶし = 森、赤い点 = 観光地
この「色と意味の対応表」がないと、地図を読み解くのは困難です。グラフの凡例も同じ役割を果たします。
凡例の基本的な使い方
凡例を表示するには、2つのステップが必要です。
📊 凡例表示の2ステップ
ステップ
やること
コード例
1. ラベルを設定
plot()にlabel引数を追加
plt.plot(…, label=’2023年’)
2. 凡例を表示
legend()関数を呼び出す
plt.legend()
注意: label引数だけでは凡例は表示されません。必ずplt.legend()を呼び出してください。
基本的な凡例の例を見てみましょう。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
# データ
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales_2023 = [100, 120, 150, 130, 160, 180]
sales_2024 = [110, 140, 170, 160, 190, 220]
plt.figure(figsize=(10, 6))
# label引数で凡例に表示する名前を指定
plt.plot(months, sales_2023, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2023年’)
plt.plot(months, sales_2024, marker=’s’, linewidth=2.5,
color=’coral’, label=’2024年’)
# 凡例を表示(この行がないと凡例は表示されない!)
plt.legend()
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘年度別売上比較’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.show()
凡例の位置指定
凡例の位置は、loc 引数で指定します。適切な位置を選ぶことで、データを隠さずに凡例を表示できます。
💡 loc引数で指定できる位置
loc引数
位置
使いどころ
‘best’
自動で最適な位置
迷ったらこれを使う(推奨)
‘upper right’
右上
左下にデータが集中する場合
‘upper left’
左上
右下にデータが集中する場合
‘lower right’
右下
左上にデータが集中する場合
‘lower left’
左下
右上にデータが集中する場合
‘center’
中央
通常は使わない(データを隠す)
【位置のイメージ図】
┌─────────────────────────────────┐
│ upper left │ upper center │ upper right │
├────────────┼────────────────┼─────────────┤
│ center left│ center │ center right│
├────────────┼────────────────┼─────────────┤
│ lower left │ lower center │ lower right │
└─────────────────────────────────┘
凡例の詳細設定
凡例は、枠線、影、タイトルなど、さまざまなカスタマイズが可能です。
📊 legend()のオプション引数
引数
意味
使用例
効果
loc
位置
loc=’upper left’
左上に配置
fontsize
文字サイズ
fontsize=11
文字が大きく/小さくなる
frameon
枠線の有無
frameon=True
枠線が表示される
shadow
影の有無
shadow=True
凡例に影がつく
fancybox
角を丸くする
fancybox=True
角丸の枠になる
title
凡例のタイトル
title=’年度’
凡例に見出しがつく
詳細設定を使った凡例の例です。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales_2023 = [100, 120, 150, 130, 160, 180]
sales_2024 = [110, 140, 170, 160, 190, 220]
plt.figure(figsize=(10, 6))
plt.plot(months, sales_2023, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2023年’)
plt.plot(months, sales_2024, marker=’s’, linewidth=2.5,
color=’coral’, label=’2024年’)
# 凡例の詳細設定
plt.legend(
loc=’upper left’, # 左上に配置
fontsize=11, # フォントサイズ
frameon=True, # 枠を表示
shadow=True, # 影をつける
fancybox=True, # 角を丸くする
title=’年度’, # 凡例のタイトル
title_fontsize=12 # タイトルのフォントサイズ
)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘年度別売上比較’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.show()
凡例をグラフ外に配置
データが多い場合や凡例がグラフを隠してしまう場合は、グラフの外側に凡例を配置 することができます。これにはbbox_to_anchor 引数を使います。
【bbox_to_anchorの仕組み】
bbox_to_anchor=(x, y) で凡例のアンカーポイント(基準点)を指定
・x=1.0 はグラフの右端
・x=1.05 はグラフの右端から少し外側
・y=1.0 はグラフの上端
【よく使う設定】
グラフの右外側に配置:
bbox_to_anchor=(1.05, 1), loc=’upper left’
グラフの下に配置:
bbox_to_anchor=(0.5, -0.15), loc=’upper center’
グラフ外に凡例を配置する例です。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales_2023 = [100, 120, 150, 130, 160, 180]
sales_2024 = [110, 140, 170, 160, 190, 220]
plt.figure(figsize=(12, 6)) # 凡例のスペースを確保するため幅を広げる
plt.plot(months, sales_2023, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2023年’)
plt.plot(months, sales_2024, marker=’s’, linewidth=2.5,
color=’coral’, label=’2024年’)
# グラフの右外側に凡例を配置
plt.legend(
bbox_to_anchor=(1.05, 1), # (x, y) 1より大きい値で外側
loc=’upper left’, # アンカーポイントを凡例の左上に
fontsize=11,
frameon=True
)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘年度別売上比較’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.tight_layout() # 凡例が切れないように自動調整
plt.show()
⚠️ tight_layout()を忘れずに
bbox_to_anchorでグラフ外に凡例を配置する場合、plt.tight_layout() を呼び出さないと凡例が切れてしまうことがあります。必ずplt.show()の前に追加しましょう。
💬 4. テキスト注釈の追加
注釈の役割と重要性
グラフに注釈(アノテーション) を追加することで、特定のポイントを強調したり、追加情報を提供したりできます。STEP 2で学んだ「タイトルで結論を伝える」原則と同様に、注釈は「何が重要か」 を見る人に直接伝える手段です。
Matplotlibには2つの注釈機能があります:text() とannotate() です。
📊 text() vs annotate() の違い
項目
text()
annotate()
主な用途
単純なテキストを配置
矢印で特定のポイントを指し示す
矢印
なし
あり(推奨)
適した場面
補足説明、注記、出典
最高値、最低値、異常値の強調
視覚的効果
控えめ
目立つ(矢印で視線を誘導)
💡 身近な例で考えてみよう
新聞や雑誌のグラフを思い出してください。
text()のような注釈 :グラフ下の「出典:〇〇省」
annotate()のような注釈 :「過去最高!」と矢印でピーク点を指している
text()による注釈
text() 関数は、グラフ上の指定した座標にテキストを配置します。出典の記載や補足説明に適しています。
【text()の基本構文】
plt.text(x, y, ‘テキスト’)
・x, y はデータの座標(グラフの目盛りに対応)
・例:x=2, y=155 なら、X軸が2、Y軸が155の位置
【よく使うオプション】
plt.text(
x, y, ‘テキスト’,
fontsize=12, # 文字サイズ
color=’red’, # 文字色
fontweight=’bold’, # 太字
bbox=dict(…) # 背景ボックス
)
text()を使った注釈の例を見てみましょう。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales = [100, 120, 150, 130, 160, 180]
plt.figure(figsize=(10, 6))
plt.plot(months, sales, marker=’o’, linewidth=2.5, color=’steelblue’)
# テキスト注釈を追加
plt.text(
2, 155, # (x座標, y座標) – 「3月」の上あたり
‘過去最高!’, # 表示するテキスト
fontsize=14, # フォントサイズ
color=’red’, # 赤色で目立たせる
fontweight=’bold’, # 太字にする
bbox=dict( # テキストの背景を設定
boxstyle=’round,pad=0.5′, # 角丸の四角形、余白0.5
facecolor=’yellow’, # 背景色を黄色に
alpha=0.7 # 透明度70%
)
)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘月別売上推移’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.show()
💡 bbox引数でテキストの背景を設定
bbox引数を使うと、テキストの後ろに背景ボックスを追加できます。これにより、グラフの線とテキストが重なっても読みやすくなります。
オプション
意味
例
boxstyle
ボックスの形
‘round,pad=0.5’(角丸)、’square’(四角)
facecolor
背景色
‘yellow’, ‘white’, ‘#ffff00’
alpha
透明度
0.7(70%不透明)、1.0(完全に不透明)
edgecolor
枠線の色
‘red’, ‘black’
annotate()による矢印付き注釈
annotate() 関数は、特定のデータポイントを矢印で指し示しながらテキストを表示します。最高値や異常値など、注目してほしいポイントを強調 するのに最適です。
【annotate()の基本構文】
plt.annotate(
‘テキスト’, # 表示する文字
xy=(x1, y1), # 矢印の先端(指し示したいポイント)
xytext=(x2, y2), # テキストの位置
arrowprops=dict(…) # 矢印のスタイル
)
【xyとxytextの違い】
・xy:矢印が指すポイント(データの座標)
・xytext:テキストを表示する位置(データの座標)
【イメージ】
テキスト ← xytext=(x2, y2)
↓
────→● ← xy=(x1, y1)
矢印
annotate()を使った矢印付き注釈の例です。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales = [100, 120, 150, 130, 160, 180]
plt.figure(figsize=(10, 6))
plt.plot(months, sales, marker=’o’, linewidth=2.5, color=’steelblue’)
# 矢印付き注釈を追加
plt.annotate(
‘過去最高の売上!’, # 表示するテキスト
xy=(5, 180), # 矢印の先端(6月のデータポイント)
xytext=(3.5, 165), # テキストの位置
fontsize=12, # フォントサイズ
color=’red’, # 文字色
fontweight=’bold’, # 太字
bbox=dict( # テキストの背景
boxstyle=’round,pad=0.5′,
facecolor=’yellow’,
alpha=0.8
),
arrowprops=dict( # 矢印のスタイル
arrowstyle=’->’, # 矢印の形(→)
color=’red’, # 矢印の色
lw=2 # 線の太さ
)
)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘月別売上推移’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.show()
📊 arrowpropsのオプション
オプション
意味
よく使う値
arrowstyle
矢印の形
‘->’(シンプル)、’-|>’(三角)、’fancy’(装飾)
color
矢印の色
‘red’, ‘black’, ‘blue’
lw
線の太さ
1, 1.5, 2(大きいほど太い)
connectionstyle
矢印の曲げ方
‘arc3,rad=0.3’(曲線)、None(直線)
複数の注釈を追加
1つのグラフに複数の注釈を追加することで、さまざまなポイントを同時に強調できます。ただし、注釈が多すぎるとグラフが見にくくなるので、重要なポイントに絞る ことが大切です。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales = [100, 120, 150, 130, 160, 180]
plt.figure(figsize=(10, 6))
plt.plot(months, sales, marker=’o’, linewidth=2.5, color=’steelblue’)
# 注釈1: 最高値を強調
plt.annotate(
‘最高!’,
xy=(5, 180),
xytext=(4, 170),
fontsize=11,
color=’red’,
fontweight=’bold’,
arrowprops=dict(arrowstyle=’->’, color=’red’, lw=1.5)
)
# 注釈2: 前月比減少を指摘
plt.annotate(
‘前月比減少’,
xy=(3, 130),
xytext=(3.5, 115),
fontsize=10,
color=’blue’,
arrowprops=dict(arrowstyle=’->’, color=’blue’, lw=1.5)
)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘月別売上推移’, fontsize=16, fontweight=’bold’)
plt.grid(True, alpha=0.3)
plt.show()
💡 注釈を追加する際のベストプラクティス
数を絞る: 1つのグラフに2〜3個まで(多すぎると逆効果)
重要なポイントだけ: 最高値、最低値、転換点など
テキストは短く: 「過去最高!」「前年比20%増」など
色を効果的に: 赤=警告/重要、青=情報、緑=良好
📏 5. グリッド線の詳細設定
グリッド線の役割
グリッド線(目盛り線) は、グラフの値を読み取りやすくするための補助線です。特に、データポイントの正確な値を知りたいときに役立ちます。
ただし、STEP 2で学んだように、グリッド線は「補助的な存在」です。濃すぎるグリッド線はデータを見にくくする ため、適切な設定が重要です。
⚠️ グリッド線の注意点
Excelのデフォルトのグリッド線は濃すぎることが多いです。Matplotlibでも同様に、デフォルトのままだとグリッド線が目立ちすぎる場合があります。
推奨: alpha(透明度)を0.3〜0.5に設定し、グリッド線を薄くしましょう。
基本的なグリッド
plt.grid(True) でグリッド線を表示します。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
plt.plot(x, y, marker=’o’, linewidth=2.5, color=’steelblue’)
# グリッド線を表示
plt.grid(True)
plt.xlabel(‘X軸’, fontsize=12)
plt.ylabel(‘Y軸’, fontsize=12)
plt.title(‘グリッド線の基本’, fontsize=16, fontweight=’bold’)
plt.show()
グリッド線のカスタマイズ
grid()関数には、色、線のスタイル、透明度などを設定するオプションがあります。
📊 grid()のオプション引数
引数
意味
よく使う値
効果
axis
どの軸に表示するか
‘both’, ‘x’, ‘y’
‘y’で横線のみ表示
color
線の色
‘gray’, ‘#cccccc’
グレーが目立ちすぎず推奨
linestyle
線のスタイル
‘–‘(破線), ‘:’(点線), ‘-‘(実線)
破線が控えめで推奨
linewidth
線の太さ
0.5, 0.7, 1.0
細い方がデータを邪魔しない
alpha
透明度
0.3〜0.5(推奨)
薄くするとデータが際立つ
カスタマイズしたグリッド線の例です。
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
plt.figure(figsize=(10, 6))
plt.plot(x, y, marker=’o’, linewidth=2.5, color=’steelblue’)
# 詳細なグリッド設定
plt.grid(
True, # グリッドを表示
axis=’both’, # ‘x’, ‘y’, ‘both’ から選択
color=’gray’, # グリッド線の色
linestyle=’–‘, # 線のスタイル(’–‘は破線)
linewidth=0.7, # 線の太さ
alpha=0.5 # 透明度(0〜1)
)
plt.xlabel(‘X軸’, fontsize=12)
plt.ylabel(‘Y軸’, fontsize=12)
plt.title(‘カスタマイズされたグリッド線’, fontsize=16, fontweight=’bold’)
plt.show()
棒グラフにはY軸のみのグリッド
棒グラフでは、Y軸(横線)のみ のグリッドがよく使われます。縦のグリッド線は棒と重なって見にくくなるためです。
import matplotlib.pyplot as plt
categories = [‘A商品’, ‘B商品’, ‘C商品’, ‘D商品’, ‘E商品’]
values = [100, 120, 80, 150, 90]
plt.figure(figsize=(10, 6))
plt.bar(categories, values, color=’steelblue’, edgecolor=’black’)
# Y軸のみにグリッド(棒グラフで推奨)
plt.grid(True, axis=’y’, linestyle=’–‘, alpha=0.7)
plt.xlabel(‘商品’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
plt.title(‘商品別売上’, fontsize=16, fontweight=’bold’)
plt.show()
💡 グラフの種類別おすすめグリッド設定
グラフの種類
推奨設定
理由
棒グラフ
axis=’y’(横線のみ)
縦線は棒と重なり見にくい
折れ線グラフ
axis=’both’(両方)
時系列の正確な値を読むため
散布図
axis=’both’(両方)
X-Y座標の両方が重要
円グラフ
グリッドなし
円グラフには不要
🎯 6. 実践的な例:完成度の高いグラフを作る
ここまで学んだ内容をすべて組み合わせて、プロフェッショナルなグラフ を作成してみましょう。このコードは長いですが、各部分の役割を理解すれば難しくありません。
【完成グラフの構成要素】
1. 基本設定
– figsize:グラフのサイズ
– plot():データのプロット
2. ラベルとタイトル
– title():結論を伝えるタイトル
– xlabel(), ylabel():軸ラベル(単位付き)
3. 凡例
– legend():複数データの識別
4. 注釈
– annotate():最高値を矢印で強調
5. グリッド
– grid():値を読みやすくする補助線
6. 補足情報
– text():出典や注記
以下が完成コードです。Google Colabにコピー&ペーストして実行してみてください。
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
# データ
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’, ‘6月’]
sales_2023 = [100, 120, 150, 130, 160, 180]
sales_2024 = [110, 140, 170, 160, 190, 220]
# グラフのサイズを設定
plt.figure(figsize=(12, 7))
# データをプロット
plt.plot(months, sales_2023, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2023年’, markersize=8)
plt.plot(months, sales_2024, marker=’s’, linewidth=2.5,
color=’coral’, label=’2024年’, markersize=8)
# タイトルと軸ラベル
plt.title(‘年度別月別売上推移’, fontsize=18, fontweight=’bold’,
pad=20, loc=’left’)
plt.xlabel(‘月’, fontsize=13, fontweight=’bold’, labelpad=10)
plt.ylabel(‘売上(万円)’, fontsize=13, fontweight=’bold’, labelpad=10)
# 凡例
plt.legend(loc=’upper left’, fontsize=11, frameon=True,
shadow=True, fancybox=True)
# 注釈: 2024年6月の最高値を強調
plt.annotate(
‘過去最高!\n220万円達成’,
xy=(5, 220),
xytext=(3.5, 210),
fontsize=11,
color=’red’,
fontweight=’bold’,
bbox=dict(
boxstyle=’round,pad=0.6′,
facecolor=’yellow’,
alpha=0.8,
edgecolor=’red’,
linewidth=2
),
arrowprops=dict(
arrowstyle=’->’,
color=’red’,
lw=2,
connectionstyle=’arc3,rad=0.3′
)
)
# グリッド
plt.grid(True, linestyle=’–‘, alpha=0.4, linewidth=0.7)
# 補足情報
plt.text(0.5, 95, ‘※2024年は前年比平均15%増’,
fontsize=10, color=’gray’, style=’italic’)
plt.tight_layout()
plt.show()
📝 STEP 10 のまとめ
✅ このステップで学んだこと
トピック
重要ポイント
軸ラベル
xlabel(), ylabel()で単位を明記。fontsize=12〜14が読みやすい
タイトル
title()で結論を伝える。fontsize=16〜18、loc=’left’で左寄せ
凡例
label引数+legend()。loc=’best’で自動配置が便利
text()注釈
座標を指定してテキストを配置。補足説明や出典に最適
annotate()注釈
矢印で特定ポイントを強調。最高値・異常値に使用
グリッド線
alpha=0.3〜0.5で薄く。棒グラフはaxis=’y’のみ
💡 最重要ポイント
グラフは「見ただけでわかる」 ことが重要です。軸ラベル、タイトル、凡例を適切に設定し、必要に応じて注釈を追加しましょう。
特にannotate()による矢印付き注釈 は、重要なポイントを効果的に伝えるための強力なツールです。ただし、注釈は多すぎると逆効果なので、2〜3個に絞りましょう。
次のステップでは、グラフの保存とエクスポート方法 を学びます!
📝 実践演習
演習 1
基礎
折れ線グラフを作成し、タイトル、軸ラベル(単位付き)、凡例を追加してください。
解答を見る
【解答のポイント】
以下の3つを必ず設定します:
title(): 何のグラフかわかるタイトル
xlabel(), ylabel(): 単位を含む軸ラベル
label引数 + legend(): 凡例の表示
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’]
sales = [100, 120, 150, 130, 160]
plt.figure(figsize=(10, 6))
plt.plot(months, sales, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2024年売上’)
# タイトルと軸ラベル
plt.title(‘月別売上推移’, fontsize=16, fontweight=’bold’)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
# 凡例
plt.legend(loc=’best’, fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
演習 2
応用
折れ線グラフに矢印付きの注釈を追加し、最高値(5月の160万円)を強調してください。
解答を見る
【解答のポイント】
annotate()を使用して、以下を設定します:
xy: 矢印の先端(最高値のデータポイント)
xytext: テキストの位置(xyから少し離す)
arrowprops: 矢印のスタイル
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’]
sales = [100, 120, 150, 130, 160]
plt.figure(figsize=(10, 6))
plt.plot(months, sales, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2024年売上’)
# タイトルと軸ラベル
plt.title(‘月別売上推移’, fontsize=16, fontweight=’bold’)
plt.xlabel(‘月’, fontsize=12)
plt.ylabel(‘売上(万円)’, fontsize=12)
# 最高値を注釈で強調
plt.annotate(
‘最高値!\n160万円’,
xy=(4, 160), # 5月(インデックス4)のデータポイント
xytext=(2.5, 155), # テキストの位置
fontsize=12,
color=’red’,
fontweight=’bold’,
bbox=dict(
boxstyle=’round,pad=0.5′,
facecolor=’yellow’,
alpha=0.8
),
arrowprops=dict(
arrowstyle=’->’,
color=’red’,
lw=2
)
)
plt.legend(loc=’upper left’, fontsize=11)
plt.grid(True, alpha=0.3)
plt.show()
演習 3
発展
2つのデータ系列(2023年と2024年)をプロットし、それぞれの最高値に注釈を追加してください。凡例はグラフの右外側に配置してください。
解答を見る
【解答のポイント】
複数の要素を組み合わせます:
2つのplot(): それぞれにlabel引数を設定
2つのannotate(): 各データ系列の最高値に
bbox_to_anchor: 凡例をグラフ外に配置
tight_layout(): 凡例が切れないように
※コードが長い場合は横にスクロールできます
import matplotlib.pyplot as plt
months = [‘1月’, ‘2月’, ‘3月’, ‘4月’, ‘5月’]
sales_2023 = [100, 120, 150, 130, 160]
sales_2024 = [110, 140, 170, 160, 190]
plt.figure(figsize=(12, 7))
plt.plot(months, sales_2023, marker=’o’, linewidth=2.5,
color=’steelblue’, label=’2023年’)
plt.plot(months, sales_2024, marker=’s’, linewidth=2.5,
color=’coral’, label=’2024年’)
plt.title(‘年度別売上比較’, fontsize=18, fontweight=’bold’, pad=20)
plt.xlabel(‘月’, fontsize=13, labelpad=10)
plt.ylabel(‘売上(万円)’, fontsize=13, labelpad=10)
# 2023年の最高値
plt.annotate(
‘2023年最高’,
xy=(4, 160),
xytext=(3, 145),
fontsize=10,
color=’steelblue’,
arrowprops=dict(arrowstyle=’->’, color=’steelblue’, lw=1.5)
)
# 2024年の最高値
plt.annotate(
‘2024年最高!’,
xy=(4, 190),
xytext=(2.5, 180),
fontsize=11,
color=’red’,
fontweight=’bold’,
bbox=dict(
boxstyle=’round,pad=0.5′,
facecolor=’yellow’,
alpha=0.8
),
arrowprops=dict(arrowstyle=’->’, color=’red’, lw=2)
)
# 凡例をグラフの右外側に配置
plt.legend(
bbox_to_anchor=(1.05, 1),
loc=’upper left’,
fontsize=11,
frameon=True,
shadow=True
)
plt.grid(True, linestyle=’–‘, alpha=0.4)
plt.tight_layout()
plt.show()
❓ よくある質問
Q1: text()とannotate()はどう使い分けるべきですか?
特定のポイントを指し示す場合はannotate()を使いましょう。 annotate()は矢印を使って「このデータポイントを見て!」と視覚的にわかりやすく表現できます。一方、出典の記載や補足説明など、特定のポイントを指さない場合はtext()で十分です。
使い分けの目安:
・「最高値を強調したい」→ annotate()
・「出典:〇〇省」と書きたい → text()
Q2: 注釈のテキストがグラフの線と重なって見づらいです。どうすればいいですか?
bbox引数で背景色を追加しましょう。 bbox=dict(boxstyle=’round,pad=0.5′, facecolor=’yellow’, alpha=0.8)のように設定すると、テキストの後ろに背景ボックスが表示され、グラフの線と重なっても読みやすくなります。
ポイント: alpha(透明度)を0.7〜0.9にすると、背景を透過させつつテキストを読みやすくできます。
Q3: 凡例がグラフのデータを隠してしまいます。どうすればいいですか?
3つの解決方法があります。
loc=’best’を使う: Matplotlibが自動で最適な位置を選びます
bbox_to_anchorでグラフ外に配置: bbox_to_anchor=(1.05, 1), loc=’upper left’で右外側に
凡例のサイズを小さくする: fontsize=9など
グラフ外に配置する場合は、plt.tight_layout() を忘れずに追加してください。
Q4: annotate()のxyとxytextの座標はどう決めればいいですか?
xy(矢印の先端)はデータの座標、xytext(テキスト)は読みやすい位置を選びます。
手順:
xyには強調したいデータポイントの座標を指定(例:最高値の(5, 180))
xytextはxyから少し離れた位置を指定。テキストがデータを隠さないよう調整
実行してみて、位置が悪ければ数値を微調整
ヒント: 文字列に\n(改行)を含む場合は、xytextの座標をさらに調整する必要があります。
Q5: グリッド線は表示すべきですか、しないべきですか?
グラフの目的によります。
グリッド線を表示すべき場合:
正確な値を読み取る必要がある(レポート、分析)
折れ線グラフや散布図で座標が重要
グリッド線が不要または薄くすべき場合:
プレゼンで全体のトレンドを見せたい
円グラフ(グリッドは不要)
推奨: 迷ったらalpha=0.3で薄く表示。データが際立ちつつ、値も読める状態がベストです。
×
artnasekai
#artnasekai #学習メモ