[Pythonのはじめ方] Part30: Matplotlibによる可視化

データをグラフにして分かりやすく表現しよう!


Warning: Undefined array key “is_admin” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 113

Warning: Undefined array key “is_category_top” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 118

Warning: Undefined array key “is_top” in /home/c2261046/public_html/omomuki-tech.com/wp-content/themes/sango-theme/library/gutenberg/dist/classes/Toc.php on line 124

はじめに:Matplotlibって何?🤔

Matplotlib(マットプロットリブ)は、Pythonで最も広く使われているデータ可視化ライブラリの一つです。数値データをグラフや図にして表示することができます。

データ分析の結果や機械学習のモデル評価など、数字だけでは分かりにくい情報を視覚的に表現することで、傾向やパターンを直感的に理解できるようになります。論文品質のグラフを作成することも可能で、研究分野でも広く利用されています。

このステップでは、Matplotlibの基本的な使い方を学び、様々な種類のグラフを作成する方法を見ていきましょう!

💡 ポイント: Matplotlibを使うと、折れ線グラフ、棒グラフ、散布図、ヒストグラムなど、様々な種類のグラフを簡単に作成できます。

Matplotlibのインストール⚙️

Matplotlibは外部ライブラリなので、使用する前にインストールが必要です。Pythonのパッケージ管理ツールであるpipを使って簡単にインストールできます。

ターミナル(Windowsの場合はコマンドプロンプト)を開き、以下のコマンドを実行してください。

pip install matplotlib

Jupyter NotebookやGoogle Colaboratoryを使っている場合は、セルの先頭に!をつけて実行します。

!pip install matplotlib

“Successfully installed matplotlib-…”のようなメッセージが表示されればインストール完了です!

基本的なグラフの作成手順📈

Matplotlibでグラフを作成する基本的な流れは以下のようになります。

  1. matplotlib.pyplotモジュールをインポートする(慣例としてpltという別名をつけます)。
  2. グラフにするためのデータ(リストやNumPy配列など)を準備する。
  3. plt.plot()などの関数を使ってグラフを作成する。
  4. plt.title()plt.xlabel()などでグラフのタイトルやラベルを設定する(オプション)。
  5. plt.show()関数でグラフを表示する。

まずは簡単な折れ線グラフを作成してみましょう。

import matplotlib.pyplot as plt
import numpy as np # NumPyもよく一緒に使われます

# 1. pyplotをインポート (pltとして)

# 2. データの準備 (例としてサインカーブ)
x = np.linspace(0, 2 * np.pi, 100) # 0から2πまで100個の等間隔な点を生成
y = np.sin(x)

# 3. グラフの作成
plt.plot(x, y)

# 4. タイトルとラベルの設定 (オプション)
plt.title("Sine Curve Example")
plt.xlabel("X-axis (radians)")
plt.ylabel("Y-axis (sin(x))")
plt.grid(True) # グリッド線を表示 (オプション)

# 5. グラフの表示
plt.show()
⚠️ 注意: Jupyter NotebookやGoogle Colabなどの環境では、%matplotlib inlineというマジックコマンドをコードの最初の方で実行しておくと、plt.show()なしでもグラフが表示されるようになります。ただし、明示的にplt.show()を呼ぶのが一般的な習慣です。

よく使われるグラフの種類📊

Matplotlibでは様々な種類のグラフを描画できます。ここでは代表的なものをいくつか紹介します。

グラフの種類 主な用途 作成関数 (pyplot)
折れ線グラフ 時間経過に伴うデータの変化、傾向の表示 plt.plot()
棒グラフ カテゴリ間の量の比較 plt.bar() (縦棒), plt.barh() (横棒)
散布図 2つの量的変数の関係性、分布の表示 plt.scatter()
ヒストグラム 量的データの度数分布の表示 plt.hist()
円グラフ 全体に対する各要素の割合の表示 plt.pie()
箱ひげ図 データの分布(最小値、最大値、四分位数、中央値)の要約と比較 plt.boxplot()

棒グラフの例

import matplotlib.pyplot as plt

categories = ['A', 'B', 'C', 'D']
values = [23, 45, 56, 12]

plt.bar(categories, values, color='skyblue') # bar関数を使用
plt.title("Bar Chart Example")
plt.xlabel("Categories")
plt.ylabel("Values")
plt.show()

散布図の例

import matplotlib.pyplot as plt
import numpy as np

# ランダムなデータを生成
np.random.seed(0) # 再現性のために乱数シードを固定
x = np.random.rand(50)
y = np.random.rand(50)
colors = np.random.rand(50) # 色もランダムに
sizes = 1000 * np.random.rand(50) # サイズもランダムに

plt.scatter(x, y, c=colors, s=sizes, alpha=0.5, cmap='viridis') # scatter関数を使用
plt.title("Scatter Plot Example")
plt.xlabel("X Value")
plt.ylabel("Y Value")
plt.colorbar() # カラーバーを表示
plt.show()

グラフのカスタマイズ🎨

Matplotlibでは、グラフの見た目を細かくカスタマイズできます。

  • タイトルとラベル: plt.title(), plt.xlabel(), plt.ylabel()
  • 軸の範囲: plt.xlim(), plt.ylim()
  • 凡例: 複数のデータをプロットした場合に、各データが何を表すかを示すためにplt.legend()を使います。plt.plot()などの関数でlabel='...'引数を指定しておく必要があります。
  • 色と線のスタイル: plt.plot()などの関数内でcolor='red'linestyle='--'のように指定します。
  • マーカー: データ点を強調するためにmarker='o'のように指定します。
  • グリッド線: plt.grid(True)で表示できます。
import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)

plt.plot(x, y1, color='blue', linestyle='-', label='sin(x)') # 青い実線
plt.plot(x, y2, color='red', linestyle='--', marker='o', markersize=4, label='cos(x)') # 赤い破線、小さい円マーカー

plt.title("Customized Plot")
plt.xlabel("X-axis")
plt.ylabel("Y-axis")
plt.xlim(0, 10) # X軸の範囲を0から10に
plt.ylim(-1.5, 1.5) # Y軸の範囲を-1.5から1.5に
plt.legend(loc='upper right') # 凡例を右上に表示
plt.grid(True)
plt.show()

複数のグラフを並べる (Subplots)

複数のグラフを一つの描画領域(Figure)内に並べて表示したい場合があります。このような場合はplt.subplots()関数を使うと便利です。

plt.subplots(行数, 列数)と指定すると、FigureオブジェクトとAxesオブジェクト(各グラフを描画する領域)の配列(または単一のAxesオブジェクト)が返されます。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 2 * np.pi, 100)
y_sin = np.sin(x)
y_cos = np.cos(x)

# 1行2列のサブプロットを作成
fig, axes = plt.subplots(1, 2, figsize=(10, 4)) # figsizeで全体のサイズを指定

# 左側のプロット (axes[0])
axes[0].plot(x, y_sin, color='blue')
axes[0].set_title('Sine Curve')
axes[0].set_xlabel('Radians')
axes[0].set_ylabel('sin(x)')
axes[0].grid(True)

# 右側のプロット (axes[1])
axes[1].plot(x, y_cos, color='red')
axes[1].set_title('Cosine Curve')
axes[1].set_xlabel('Radians')
axes[1].set_ylabel('cos(x)')
axes[1].grid(True)

# レイアウト調整(タイトルなどが重ならないように)
plt.tight_layout()

# 表示
plt.show()

axesが配列になっているので、インデックス(axes[0], axes[1])を指定して、それぞれのグラフに対してplotset_titleなどのメソッドを呼び出します。

さらに学ぶために📚

Matplotlibは非常に多機能なライブラリです。ここで紹介したのは基本的な機能の一部にすぎません。

より高度な使い方や、特定の種類のグラフを作成する方法については、公式ドキュメントやギャラリーを参照することをお勧めします。

実際に手を動かしながら、様々なグラフを作成してみるのが上達への近道です!💪