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

Python

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

はじめに: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は非常に多機能なライブラリです。ここで紹介したのは基本的な機能の一部にすぎません。

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

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

コメント

タイトルとURLをコピーしました