📈 ステップ35: Matplotlibで最初のグラフを描こう
データを視覚化して、わかりやすく伝えよう!
ステップ34でPandasの総復習を行いました。今回からはデータ可視化を学びます。まずは最も基本的なグラフライブラリMatplotlibを使って、折れ線グラフを描いてみましょう。
📖 このステップで学ぶこと
・Matplotlibのインポート
・折れ線グラフの作成
・plt.plot()の基本
・グラフの表示と保存
🎯 1. なぜグラフが必要なのか?
データを数字の表で見るよりも、グラフで見る方がずっとわかりやすいです。
🔰 数字だけだと…
例:月別売上データ
1月: 120万円 2月: 135万円 3月: 128万円 4月: 142万円 5月: 155万円 6月: 148万円
💡 数字だけだとわかりにくいこと
・全体的に増えているのか、減っているのか
・どの月が一番良かったのか
・急激な変化があったのか
これらはグラフにすると一目でわかります!
📊 グラフの利点
📌 グラフを使うメリット
・一目で傾向がわかる:増えているか、減っているか
・比較しやすい:どちらが大きいか
・異常値に気づく:変な値がすぐわかる
・相手に伝わりやすい:プレゼンテーションに最適
📚 2. Matplotlibとは?
Matplotlib(マットプロットリブ)は、Pythonで最も使われているグラフ描画ライブラリです。
🔰 Matplotlibのインポート
コード:Matplotlibのインポート
# Matplotlibのインポート
import matplotlib.pyplot as plt
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 コードの解説
import matplotlib.pyplot as plt
・matplotlib:ライブラリの名前
・pyplot:グラフを描く機能を持つモジュール
・as plt:「plt」という短い名前で使えるようにする
なぜ「plt」という名前?
・毎回「matplotlib.pyplot」と書くのは大変
・「plt」という短い名前が世界中で使われている慣習
・ネットの情報やサンプルコードも「plt」を使っている
📌 Google Colabでの使い方
Google ColabではMatplotlibは最初からインストールされています。
インポートするだけですぐに使えます。
ローカル環境の場合は、事前に以下のコマンドでインストールが必要です:
pip install matplotlib
📈 3. 最初のグラフを描く
🔰 シンプルな折れ線グラフ
まずは最もシンプルなグラフを描いてみましょう。
コード:最初のグラフ
import matplotlib.pyplot as plt
# データを準備
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]
# グラフを描く
plt.plot(x, y)
# グラフを表示
plt.show()
print("グラフが表示されました!")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 コードの解説(1行ずつ)
x = [1, 2, 3, 4, 5]
・x軸(横軸)のデータをリストで準備します
・グラフの横方向の位置を決めます
y = [2, 4, 6, 8, 10]
・y軸(縦軸)のデータをリストで準備します
・グラフの縦方向の位置(高さ)を決めます
plt.plot(x, y)
・x軸とy軸のデータを使って折れ線グラフを描きます
・この時点ではまだ表示されません(描画の準備だけ)
plt.show()
・準備したグラフを画面に表示します
・これを忘れるとグラフが表示されません!
実行結果
右上がりの直線グラフが表示されます:
・x軸:1, 2, 3, 4, 5
・y軸:2, 4, 6, 8, 10
・点(1,2)、(2,4)、(3,6)、(4,8)、(5,10)を結んだ線
📌 グラフ描画の基本3ステップ
| ステップ | コード | 説明 |
| 1 | データを準備 | リストや配列でx軸・y軸のデータを用意 |
| 2 | plt.plot(x, y) | グラフを描く(まだ表示されない) |
| 3 | plt.show() | グラフを表示する |
📝 実データでグラフを描く
次は、もっと実践的なデータでグラフを描いてみましょう。
コード:月別売上グラフ
import matplotlib.pyplot as plt
# 月別の売上データ
months = ['1月', '2月', '3月', '4月', '5月', '6月']
sales = [120, 135, 128, 142, 155, 148]
# グラフを描く
plt.plot(months, sales)
# グラフを表示
plt.show()
print("月別売上グラフを表示しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 ポイント
・x軸には文字列(月の名前)も使えます
・Matplotlibが自動的に適切な位置に配置してくれます
・ただし、日本語は文字化けすることがあります(後のステップで対策を学びます)
📘 Pandasのデータからグラフを描く
Pandasで作ったDataFrameから直接グラフを描くこともできます。
コード:DataFrameからグラフを作成
import pandas as pd
import matplotlib.pyplot as plt
# DataFrameを作成
df = pd.DataFrame({
'月': ['1月', '2月', '3月', '4月', '5月'],
'売上': [100, 120, 115, 135, 140]
})
print("データ:")
print(df)
# DataFrameの列を使ってグラフを描く
plt.plot(df['月'], df['売上'])
# グラフを表示
plt.show()
print("\nPandasのデータからグラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 DataFrameからグラフを描くポイント
plt.plot(df[‘月’], df[‘売上’])
・df[‘月’]:DataFrameの「月」列をx軸に使用
・df[‘売上’]:DataFrameの「売上」列をy軸に使用
・列を指定するだけで、グラフが描けます
実行結果
データ:
月 売上
0 1月 100
1 2月 120
2 3月 115
3 4月 135
4 5月 140
Pandasのデータからグラフを作成しました
🎨 4. グラフをカスタマイズする
📝 複数の線を描く
1つのグラフに複数のデータを表示して比較できます。
コード:2本の線を描く
import matplotlib.pyplot as plt
# データ
months = ['1月', '2月', '3月', '4月', '5月']
tokyo = [120, 135, 128, 142, 155]
osaka = [110, 125, 120, 130, 145]
# 2本の線を描く
plt.plot(months, tokyo)
plt.plot(months, osaka)
# グラフを表示
plt.show()
print("東京と大阪の売上を比較しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 複数線のポイント
plt.plot()を複数回呼ぶだけ
・1回目のplt.plot()で1本目の線
・2回目のplt.plot()で2本目の線
・色は自動的に変わります(青、オレンジ、緑…)
・plt.show()は最後に1回だけ
📝 マーカーを付ける
データポイントにマーカー(印)を付けると、より見やすくなります。
コード:マーカー付きグラフ
import matplotlib.pyplot as plt
# データ
days = [1, 2, 3, 4, 5, 6, 7]
temperature = [18, 20, 19, 22, 24, 23, 21]
# マーカー付きで描く
plt.plot(days, temperature, marker='o')
# グラフを表示
plt.show()
print("気温のグラフにマーカーを付けました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 マーカーの指定方法
plt.plot(x, y, marker=’o’)
・marker=’o’で各データポイントに丸いマーカーが付きます
・線とマーカーの両方が表示されます
📌 よく使うマーカー
| 記号 | 形 | 例 |
| ‘o’ | 丸(●) | marker=’o’ |
| ‘s’ | 四角(■) | marker=’s’ |
| ‘^’ | 三角(▲) | marker=’^’ |
| ‘*’ | 星(★) | marker=’*’ |
| ‘+’ | プラス(+) | marker=’+’ |
| ‘x’ | バツ(×) | marker=’x’ |
📝 線のスタイルを変える
コード:異なる線スタイル
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y1 = [1, 2, 3, 4, 5]
y2 = [1, 4, 9, 16, 25]
y3 = [1, 3, 6, 10, 15]
# 異なるスタイルで3本の線
plt.plot(x, y1, linestyle='-') # 実線
plt.plot(x, y2, linestyle='--') # 破線
plt.plot(x, y3, linestyle=':') # 点線
# グラフを表示
plt.show()
print("3種類の線スタイルを使いました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📌 線のスタイル一覧
| 記号 | スタイル | 例 |
| ‘-‘ | 実線 ───── | linestyle=’-‘ |
| ‘–‘ | 破線 ─ ─ ─ | linestyle=’–‘ |
| ‘:’ | 点線 ・・・・・ | linestyle=’:’ |
| ‘-.’ | 一点鎖線 ─・─・ | linestyle=’-.’ |
📊 5. グラフの基本設定
📝 図のサイズを変える
デフォルトのグラフサイズが小さい場合は、大きくできます。
コード:図のサイズを指定
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales = [100, 120, 115, 135, 140]
# 図のサイズを指定(幅10インチ、高さ6インチ)
plt.figure(figsize=(10, 6))
# グラフを描く
plt.plot(months, sales)
# グラフを表示
plt.show()
print("大きなグラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 figsize の使い方
plt.figure(figsize=(幅, 高さ))
・単位は「インチ」です
・(10, 6)は横10インチ×縦6インチ
・plt.plot()の前に書く必要があります
おすすめのサイズ:
・(10, 6):標準的なサイズ
・(12, 8):大きめ(発表用)
・(8, 4):小さめ(ドキュメント埋め込み用)
📝 グリッド(格子線)を表示
グリッドを表示すると、値が読み取りやすくなります。
コード:グリッド付きグラフ
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 25, 20, 35, 30]
# グラフを描く
plt.plot(x, y, marker='o')
# グリッドを表示
plt.grid(True)
# グラフを表示
plt.show()
print("グリッド付きのグラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 グリッドの使い方
plt.grid(True)
・グリッド(格子線)を表示します
・値を正確に読み取りやすくなります
plt.grid(True, alpha=0.3)
・alphaで線の透明度を指定できます
・0.3にすると薄いグリッドになります
📝 軸の範囲を指定
x軸やy軸の表示範囲を自分で指定できます。
コード:軸の範囲を指定
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [10, 20, 15, 25, 22]
# グラフを描く
plt.plot(x, y)
# x軸の範囲を0〜6に
plt.xlim(0, 6)
# y軸の範囲を0〜30に
plt.ylim(0, 30)
# グラフを表示
plt.show()
print("軸の範囲を指定しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 軸範囲の指定
plt.xlim(最小値, 最大値)
・x軸の表示範囲を指定
plt.ylim(最小値, 最大値)
・y軸の表示範囲を指定
なぜ範囲を指定する?
・y軸を0から始めたい場合
・余白を追加したい場合
・複数のグラフを同じスケールで比較したい場合
📊 6. 実践例
📘 例1:売上推移グラフ
コード:商品別売上推移
import matplotlib.pyplot as plt
# データ
months = ['1月', '2月', '3月', '4月', '5月', '6月']
product_a = [120, 135, 128, 142, 155, 148]
product_b = [100, 115, 125, 118, 130, 135]
# 図のサイズ設定
plt.figure(figsize=(10, 6))
# 2つの商品の売上を描く(異なるマーカー)
plt.plot(months, product_a, marker='o', linestyle='-')
plt.plot(months, product_b, marker='s', linestyle='--')
# グリッド表示(薄め)
plt.grid(True, alpha=0.3)
# グラフを表示
plt.show()
print("商品別売上推移グラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 このグラフのポイント
・2つの商品を比較できる
・異なるマーカーで区別しやすい(丸と四角)
・異なる線スタイルでも区別(実線と破線)
・薄いグリッドで値が読み取りやすい
📘 例2:気温の変化
コード:週間気温グラフ
import matplotlib.pyplot as plt
# 1週間の気温データ
days = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
temperature = [18, 20, 22, 21, 23, 25, 24]
# 図のサイズ設定
plt.figure(figsize=(8, 5))
# 赤い線で気温を描く
plt.plot(days, temperature,
color='red', # 線の色を赤に
marker='o', # 丸いマーカー
linewidth=2) # 線の太さを2に
# グリッド表示
plt.grid(True, alpha=0.3)
# グラフを表示
plt.show()
print("週間気温グラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
💡 新しいオプション
color=’red’
・線の色を赤に指定
・’blue’, ‘green’, ‘orange’なども使えます
linewidth=2
・線の太さを2ポイントに指定
・デフォルトは1.5程度
📘 例3:3都市の比較
コード:3都市の四半期別売上
import matplotlib.pyplot as plt
# データ
quarters = ['Q1', 'Q2', 'Q3', 'Q4']
tokyo = [150, 165, 180, 195]
osaka = [130, 145, 155, 170]
nagoya = [110, 120, 135, 145]
# 図のサイズ設定
plt.figure(figsize=(10, 6))
# 3都市のデータを描く(異なるマーカー)
plt.plot(quarters, tokyo, marker='o', linewidth=2)
plt.plot(quarters, osaka, marker='s', linewidth=2)
plt.plot(quarters, nagoya, marker='^', linewidth=2)
# グリッド表示
plt.grid(True, alpha=0.3)
# y軸の範囲を調整(0から始める)
plt.ylim(0, 220)
# グラフを表示
plt.show()
print("3都市の四半期別売上を比較しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
📝 練習問題
ここまで学んだことを、実際に手を動かして確認しましょう。
問題1:シンプルなグラフ(初級)
📋 問題
以下のデータで折れ線グラフを描いてください。
x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]
※ 画面が小さい場合は、コードブロックを横にスクロールできます
解答例を見る
コード
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]
plt.plot(x, y)
plt.show()
print("グラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題2:マーカー付きグラフ(初級)
📋 問題
問題1のグラフに丸いマーカーを付けてください。
解答例を見る
コード
import matplotlib.pyplot as plt
x = [1, 2, 3, 4, 5]
y = [5, 10, 15, 20, 25]
plt.plot(x, y, marker='o')
plt.show()
print("マーカー付きグラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題3:2本の線グラフ(中級)
📋 問題
以下の2つのデータを1つのグラフに描いてください。
months = ['1月', '2月', '3月', '4月', '5月']
sales_a = [100, 120, 110, 130, 125]
sales_b = [90, 100, 115, 108, 120]
※ 画面が小さい場合は、コードブロックを横にスクロールできます
解答例を見る
コード
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales_a = [100, 120, 110, 130, 125]
sales_b = [90, 100, 115, 108, 120]
plt.plot(months, sales_a, marker='o')
plt.plot(months, sales_b, marker='s')
plt.show()
print("2本の線グラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題4:グリッド付きグラフ(中級)
📋 問題
問題3のグラフにグリッドを追加してください。
解答例を見る
コード
import matplotlib.pyplot as plt
months = ['1月', '2月', '3月', '4月', '5月']
sales_a = [100, 120, 110, 130, 125]
sales_b = [90, 100, 115, 108, 120]
plt.plot(months, sales_a, marker='o')
plt.plot(months, sales_b, marker='s')
plt.grid(True)
plt.show()
print("グリッド付きグラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
問題5:カスタマイズグラフ(上級)
📋 問題
以下の仕様でグラフを作成してください:
・図のサイズ:10×6
・3本の線(東京、大阪、名古屋)
・各線に異なるマーカー
・グリッド表示(薄め:alpha=0.3)
months = ['4月', '5月', '6月', '7月', '8月']
tokyo = [120, 135, 145, 150, 160]
osaka = [100, 115, 120, 125, 135]
nagoya = [80, 90, 95, 100, 110]
※ 画面が小さい場合は、コードブロックを横にスクロールできます
解答例を見る
コード
import matplotlib.pyplot as plt
months = ['4月', '5月', '6月', '7月', '8月']
tokyo = [120, 135, 145, 150, 160]
osaka = [100, 115, 120, 125, 135]
nagoya = [80, 90, 95, 100, 110]
# 図のサイズ設定
plt.figure(figsize=(10, 6))
# 3本の線を描く
plt.plot(months, tokyo, marker='o', linewidth=2)
plt.plot(months, osaka, marker='s', linewidth=2)
plt.plot(months, nagoya, marker='^', linewidth=2)
# グリッド表示(薄め)
plt.grid(True, alpha=0.3)
plt.show()
print("3都市の売上推移グラフを作成しました")
※ 画面が小さい場合は、コードブロックを横にスクロールできます
🎯 このステップのまとめ
✅ 学んだこと
✓ import matplotlib.pyplot as pltでインポート
✓ plt.plot(x, y)で折れ線グラフを描ける
✓ plt.show()でグラフを表示
✓ markerでデータポイントに印を付けられる
✓ linestyleで線のスタイルを変えられる
✓ plt.figure(figsize=(幅, 高さ))で図のサイズを変えられる
✓ plt.grid(True)でグリッドを表示できる
💡 次のステップに進む前に確認
以下のことができるようになったか確認しましょう:
□ 基本的な折れ線グラフを描ける
□ 複数の線を1つのグラフに描ける
□ マーカーを付けられる
□ グリッドを表示できる
□ 図のサイズを変更できる
これらができたら、次のステップに進みましょう!
❓ よくある質問
Q1: plt.show()を忘れるとどうなりますか?
A: Jupyter NotebookやGoogle Colabでは表示されることもありますが、通常のPythonスクリプトではグラフが表示されません。
必ずplt.show()を書きましょう。
Q2: グラフが小さくて見にくいです
A: plt.figure(figsize=(10, 6))で図のサイズを大きくできます。
数字を変えて調整しましょう。
Q3: 線の色を変えたいです
A: plt.plot(x, y, color='red')のように指定します。
‘blue’, ‘green’, ‘red’, ‘orange’などが使えます。次のステップで詳しく学びます。
Q4: グラフにタイトルを付けたいです
A: 次のステップ(ステップ36)で詳しく学びます。
plt.title()を使います。
Q5: 日本語が文字化けします
A: Matplotlibはデフォルトで日本語に対応していません。
後のステップで日本語対応の方法を学びます。
学習メモ
Pythonデータ分析入門 - Step 35