Python

Python MatplotlibのPyplotで簡単データ可視化!基本から応用まで完全解説

(最終更新月: 2024年11月)

✔こんな方におすすめの記事です

「Pythonでグラフを作りたいけど、方法がわからない」
「Matplotlibの基本的な使い方を知りたい」
「Pyplotでデータをきれいにグラフにしたい」

✔当記事を通じて得られること

  • MatplotlibとPyplotの基礎知識と環境構築方法
  • 様々なグラフの作成方法とカスタマイズテクニック
  • 実践的なデータ可視化のコツとサンプルコード

当記事では、Matplotlibの基本的な使い方からグラフのカスタマイズまで、実例を交えて幅広く解説していきます。
ぜひ最後までご覧ください。

Matplotlib・Pyplotとは何か?

Matplotlibは、Pythonで最も人気のあるデータ可視化ライブラリです。
とくにPyplotは、簡単な操作でグラフを作成できる便利なモジュールとなっています。
当セクションでは、以下の内容について説明します。

  • Matplotlibの概要と特徴
  • Pyplotの基本的な役割
  • インストール方法と環境構築

Matplotlibの概要と特徴

Matplotlibは、PythonでExcelのようなグラフを作成できるライブラリです。
科学技術計算やデータ分析の現場で広く使用されているため、多くの企業や研究機関で採用されています。
以下のような特徴があります。

  • 多様なグラフ形式に対応
  • 細かいカスタマイズが可能
  • 他のライブラリとの連携が容易

Pyplotの基本的な役割

PyplotはMatplotlibの中核となるモジュールの一つです。
MATLABライクな命令方式を採用しており、直感的なコーディングが可能となっています。
以下が基本的な使用例です。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y = np.sin(x)
plt.plot(x, y)
plt.show()

インストール方法と環境構築

Matplotlibのインストールは、pipコマンドで簡単におこなえます。
必要なライブラリをインストールする手順は以下の通りです。

pip install matplotlib
pip install numpy  # 数値計算用ライブラリ

インストール後は、以下のコードで動作確認ができます。

import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4])
plt.show()

基本的なグラフの作成方法

Matplotlibを使用して、様々な種類のグラフを作成できます。
まずは基本的なグラフの作成方法から学んでいきましょう。
このセクションでは、以下の内容を解説します。

  • 折れ線グラフの作成
  • 棒グラフの作成
  • 散布図の作成
  • 円グラフの作成

折れ線グラフの作成

折れ線グラフは、データの推移や傾向を表現するのに適しています。
以下のコードで、シンプルな折れ線グラフを作成できます。

import matplotlib.pyplot as plt
import numpy as np

x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])

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

棒グラフの作成

棒グラフは、カテゴリーごとの比較に適しています。
plt.barを使用して、簡単に作成できます。

categories = ['A', 'B', 'C', 'D']
values = [4, 3, 2, 5]

plt.bar(categories, values)
plt.title('Bar Chart Example')
plt.show()

散布図の作成

散布図は、2つの変数間の関係を視覚化するのに適しています。
plt.scatterを使用して作成します。

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

plt.scatter(x, y)
plt.title('Scatter Plot Example')
plt.show()

円グラフの作成

円グラフは、全体に対する割合を表現するのに適しています。
plt.pieを使用して作成できます。

sizes = [30, 20, 25, 15, 10]
labels = ['A', 'B', 'C', 'D', 'E']

plt.pie(sizes, labels=labels, autopct='%1.1f%%')
plt.title('Pie Chart Example')
plt.show()

グラフのカスタマイズ方法

グラフをより見やすく、美しくするためのカスタマイズ方法を説明します。
適切なカスタマイズにより、プロフェッショナルな印象のグラフを作成できます。
以下の項目について詳しく解説します。

  • 色とスタイルの設定
  • 軸のカスタマイズ
  • 凡例の追加
  • グリッド線の設定

色とスタイルの設定

グラフの色やスタイルを変更することで、見やすさが大きく向上します。
以下のコードでは、様々な色とスタイルの設定方法を示しています。

plt.plot(x, y1, 'r--', label='Line 1')  # 赤色の破線
plt.plot(x, y2, 'b-', label='Line 2')   # 青色の実線
plt.plot(x, y3, 'g:', label='Line 3')   # 緑色の点線

# スタイルの一括設定
plt.style.use('seaborn')  # seabornスタイルを適用

軸のカスタマイズ

軸の範囲や目盛りを調整することで、データをより効果的に表現できます。

plt.xlim(0, 10)          # x軸の範囲を設定
plt.ylim(-5, 5)          # y軸の範囲を設定
plt.xticks(rotation=45)   # x軸のラベルを45度回転
plt.grid(True)           # グリッド線を表示

凡例の追加

複数のデータを表示する場合、凡例は必須です。
位置や体裁を調整して、見やすい凡例を作成しましょう。

plt.legend(loc='upper right')  # 右上に凡例を配置
plt.legend(bbox_to_anchor=(1.05, 1))  # グラフの外側に凡例を配置
plt.legend(frameon=False)  # 枠線なしの凡例

グリッド線の設定

グリッド線を追加することで、データの読み取りが容易になります。

plt.grid(True, linestyle='--', alpha=0.7)  # 破線のグリッド
plt.grid(True, axis='y')  # y軸のみグリッド表示
plt.grid(True, which='both')  # 主目盛りと補助目盛り両方にグリッド

サブプロットの活用方法

複数のグラフを1つの図に配置する方法を説明します。
サブプロットを使用することで、データの比較が容易になります。
以下の内容について解説します。

  • サブプロットの基本的な使い方
  • グリッドレイアウトの設定
  • サブプロット間のスペース調整
  • 複数グラフの連携

サブプロットの基本的な使い方

plt.subplotを使用して、複数のグラフを配置できます。

# 2x2のサブプロットを作成
plt.subplot(2, 2, 1)  # 1番目のプロット
plt.plot(x1, y1)

plt.subplot(2, 2, 2)  # 2番目のプロット
plt.plot(x2, y2)

plt.subplot(2, 2, 3)  # 3番目のプロット
plt.plot(x3, y3)

plt.subplot(2, 2, 4)  # 4番目のプロット
plt.plot(x4, y4)

plt.tight_layout()  # レイアウトの自動調整

グリッドレイアウトの設定

GridSpecを使用して、より柔軟なレイアウトが可能です。

from matplotlib.gridspec import GridSpec

fig = plt.figure()
gs = GridSpec(3, 3)  # 3x3のグリッドを作成

ax1 = fig.add_subplot(gs[0, :])  # 1行目全体
ax2 = fig.add_subplot(gs[1:, :-1])  # 残りの左側
ax3 = fig.add_subplot(gs[1:, -1])  # 残りの右側

サブプロット間のスペース調整

plt.subplots_adjustで、グラフ間の間隔を調整できます。

plt.subplots_adjust(wspace=0.3,  # 横方向の間隔
                   hspace=0.4,  # 縦方向の間隔
                   left=0.1,    # 左マージン
                   right=0.9,   # 右マージン
                   top=0.9,     # 上マージン
                   bottom=0.1)  # 下マージン

高度なグラフ表現テクニック

より複雑で魅力的なグラフを作成するための高度なテクニックを紹介します。
これらのテクニックを使いこなすことで、プロフェッショナルなデータ可視化が可能になります。
以下の内容について説明します。

  • 3Dグラフの作成
  • アニメーションの追加
  • 複数の軸の使用
  • テキストとアノテーションの追加

3Dグラフの作成

3Dグラフを作成して、立体的なデータ表現をおこないます。

from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure()
ax = fig.add_subplot(111, projection='3d')

# データの作成
x = np.linspace(-5, 5, 100)
y = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x, y)
Z = np.sin(np.sqrt(X**2 + Y**2))

# 3D表面プロット
surf = ax.plot_surface(X, Y, Z, cmap='viridis')
plt.colorbar(surf)

アニメーションの追加

動的なグラフを作成して、データの変化を表現します。

from matplotlib.animation import FuncAnimation

fig, ax = plt.subplots()
xdata, ydata = [], []
ln, = ax.plot([], [], 'ro')

def init():
    ax.set_xlim(0, 2*np.pi)
    ax.set_ylim(-1, 1)
    return ln,

def update(frame):
    xdata.append(frame)
    ydata.append(np.sin(frame))
    ln.set_data(xdata, ydata)
    return ln,

ani = FuncAnimation(fig, update, frames=np.linspace(0, 2*np.pi, 128),
                   init_func=init, blit=True)

複数の軸の使用

異なるスケールのデータを1つのグラフに表示します。

fig, ax1 = plt.subplots()
ax2 = ax1.twinx()  # 2つ目の軸を作成

# 1つ目のデータ(左軸)
ax1.plot(x, y1, 'b-')
ax1.set_ylabel('Left Y-axis', color='b')

# 2つ目のデータ(右軸)
ax2.plot(x, y2, 'r-')
ax2.set_ylabel('Right Y-axis', color='r')

まとめ

当記事では、Python MatplotlibのPyplotについて学習してきました。

  • Matplotlibの基本概念とPyplotの使い方を理解できました
  • 様々な種類のグラフの作成方法とカスタマイズ技術を習得しました
  • 実践的なデータ可視化のテクニックを学びました

これらの知識を活用すれば、プロフェッショナルなデータ可視化が可能です。
まずは基本的なグラフから始めて、徐々に複雑なグラフにチャレンジしてみましょう。
データ可視化の世界には、まだまだ多くの可能性が広がっています。