プログラミング学習

ゼロから学ぶPython #4 データ可視化【matplotlib入門】

記事内に商品プロモーションを含む場合があります

データは「読む」よりも「見せる」ことで理解が深まるものです。
数字のままではトレンドや外れ値を見落としやすく、意思決定にも時間がかかります。

Pythonには多くの可視化ライブラリがありますが、その中でも matplotlib は最も基本的かつ広く使われるツールです。シンプルな構文でグラフを描けるうえ、細かなカスタマイズも可能。
データ分析や機械学習の第一歩として、まず押さえておきたいライブラリです。

筆者も最初にmatplotlibを触ったときは「設定が多くて難しそう」と感じましたが、基本の流れを押さえれば一気に使いやすくなります。

 

matplotlibの基本

インストール

まずはpipでインストールします(仮想環境推奨)。

pip install matplotlib

Google ColabやJupyter Notebookでは最初からインストール済みのことが多いです。

インポートの基本

最も一般的な書き方は以下の通りです。

import matplotlib.pyplot as plt
import numpy as np  # サンプルデータ作成に便利

基本の流れ(figure → plot → show)

matplotlibの基本的な流れは以下の3ステップです。

  1. データを準備する
  2. プロット(描画)する
  3. plt.show() で表示する

Jupyter Notebookでは plt.show() を書かなくても自動的に表示されます。

折れ線グラフを描いてみよう(plt.plot)

折れ線グラフは時間の経過や連続的な変化を可視化するのに適しています。
最小限のコードで描けるシンプルな例を見てみましょう。

import matplotlib.pyplot as plt

x = [1, 2, 3, 4, 5]
y = [2, 3, 5, 7, 11]

plt.plot(x, y)
plt.title("Simple Line Plot")
plt.xlabel("X")
plt.ylabel("Y")
plt.show()

実行結果
折れ線グラフの例

これだけで、シンプルな折れ線グラフが描けます。タイトル・軸ラベルを付けるだけでも見やすさがぐっと上がります。

複数の系列を重ねて描く

x = [1, 2, 3, 4, 5]
y1 = [2, 3, 5, 7, 11]
y2 = [1, 4, 6, 8, 10]

plt.plot(x, y1, label="prime-ish")
plt.plot(x, y2, label="other")
plt.legend()
plt.show()

実行結果
複数折れ線グラフ

凡例(plt.legend())を入れることで、複数の系列を区別しやすくなります。

散布図を描いてみよう(plt.scatter)

散布図は2つの変数の関係性を確認するのに便利です。
データの分布、クラスタ、外れ値を直感的に把握できます。

import numpy as np

np.random.seed(0)
x = np.random.rand(50)
y = np.random.rand(50)

plt.scatter(x, y)
plt.title("Random Scatter")
plt.xlabel("x")
plt.ylabel("y")
plt.show()

実行結果
散布図の例

散布図では点の大きさ(s)や色(c)を変えたり、カテゴリごとに色分けして可読性を高めることもできます。

【よくあるエラー】

  • ValueError: x and y must be the same size → xとyの長さが一致しているか確認。
  • グラフが表示されない → Notebookで %matplotlib inline を入れる。

棒グラフを描いてみよう(plt.bar)

棒グラフはカテゴリデータ(売上・投票数など)の比較に向いています。

categories = ["A", "B", "C", "D"]
values = [23, 45, 12, 36]

plt.bar(categories, values)
plt.title("Category Comparison")
plt.xlabel("Category")
plt.ylabel("Value")
plt.show()

実行結果
棒グラフの例

縦棒(plt.bar)のほかに、横棒グラフ(plt.barh)もあります。
データ量が多い場合は横方向のほうが見やすくなることもあります。

グラフのカスタマイズで「伝わる」データへ

タイトル・軸ラベル・凡例を整える

plt.plot(x, y1, marker="o", label="series1")
plt.plot(x, y2, marker="s", label="series2")
plt.title("Customized Plot")
plt.xlabel("Time (days)")
plt.ylabel("Value")
plt.legend(loc="upper left")
plt.grid(True)
plt.show()

注釈(アノテーション)を加える

重要なポイントやピークを明示したい場合に便利です。

plt.plot(x, y)
plt.annotate("peak", xy=(3, 5), xytext=(3.5, 6),
             arrowprops=dict(arrowstyle="->"))
plt.show()

レイアウト調整と保存

複数グラフや軸ラベルが重なったときはレイアウトを整えましょう。

plt.tight_layout()
plt.savefig("figure.png", dpi=300)  # 高解像度で保存
実務では pandas と組み合わせて使うことが多いです。
DataFrameに組み込みの .plot() メソッドがあり、内部的にmatplotlibを利用しています。
次回は pandas × 可視化 を予定しています。

まとめと次へのステップ

matplotlibは、Pythonで最初に学ぶべきデータ可視化ライブラリです。
わずか数行で折れ線・散布図・棒グラフを描けるので、初心者でも成果を「目で見て確認」できます。

グラフは「見せる技術」。
見やすいタイトル・凡例・注釈を加えるだけで、あなたのデータの説得力が大きく変わります。

最初は設定項目が多く感じるかもしれませんが、エラーが出ても焦らずに。
グラフが表示されない・フォントが化けるなどのトラブルも、AIにエラー内容を聞けばすぐに解決できます。
筆者も実際に、AIに「matplotlib グラフが出ない」と聞いて何度も助けられました。

次回(#5 ミニプロジェクトで学ぶPython)では、ここまで学んだ内容を使って「実際に動くツール」を作っていきます。
データを可視化するだけでなく、「結果を使って行動する」段階へ進みましょう。

よくあるQ&A

Q: Jupyterで図が表示されません。

A: ノートブックでは先頭に %matplotlib inline(または %matplotlib notebook)を入れると表示されます。

Q: 色やスタイルを変えたいです。

A: plt.plot(x, y, color="red", linestyle="--", marker="o") のように指定できます。
公式ドキュメントやカラーマップ一覧を参考に、自分の好みのスタイルを試してみましょう。

AIブロガー
筆者:yuki
Python未経験からAIと対話しながらコード作成。副業×自動化×プログラミングの可能性を模索中。 ▷詳細プロフィールはこちら