はじめに
このチュートリアルでは、Python の Matplotlib を使って六角形のビン付きプロットを作成する方法を案内します。六角形のビン付きプロットは、ビンが六角形で、色が各ビン内のデータポイントの数を表す 2 次元のヒストグラムプロットです。大規模なデータセットの分布を視覚化するのに役立ちます。
VM のヒント
VM の起動が完了したら、左上隅をクリックして ノートブック タブに切り替え、Jupyter Notebook を使って練習しましょう。
Jupyter Notebook の読み込みには数秒かかる場合があります。Jupyter Notebook の制限により、操作の検証を自動化することはできません。
学習中に問題がある場合は、Labby にお問い合わせください。セッション後にフィードバックを提供してください。すぐに問題を解決いたします。
ライブラリのインポート
六角形のビン付きプロットを作成するには、次のライブラリをインポートする必要があります。
- プロットを作成するための
matplotlib.pyplot - ランダムなデータを生成するための
numpy
import matplotlib.pyplot as plt
import numpy as np
データの生成
numpy.random.standard_normal() と numpy.random.standard_normal() を使って 100,000 個のデータポイントを生成します。standard_normal() は平均 0、標準偏差 1 の標準正規分布から乱数を生成します。
np.random.seed(19680801)
n = 100_000
x = np.random.standard_normal(n)
y = 2.0 + 3.0 * x + 4.0 * np.random.standard_normal(n)
xlim = x.min(), x.max()
ylim = y.min(), y.max()
六角形のビン付きプロットを作成する
matplotlib.pyplot.hexbin() を使って六角形のビン付きプロットを作成します。
fig, ax = plt.subplots(figsize=(9, 4))
hb = ax.hexbin(x, y, gridsize=50, cmap='inferno')
ax.set(xlim=xlim, ylim=ylim)
ax.set_title("Hexagon binning")
cb = fig.colorbar(hb, ax=ax, label='counts')
ここでは、グリッドサイズを 50 に設定し、カラーマップを 'inferno' に設定しています。また、各六角形内のデータポイントの数を示すカラーバーを追加しています。
対数カラースケールを追加する
hexbin() の bins='log' を設定することで、六角形のビン付きプロットに対数カラースケールを追加することができます。
fig, ax = plt.subplots(figsize=(9, 4))
hb = ax.hexbin(x, y, gridsize=50, bins='log', cmap='inferno')
ax.set(xlim=xlim, ylim=ylim)
ax.set_title("With a log color scale")
cb = fig.colorbar(hb, ax=ax, label='log10(N)')
プロットを表示する
最後に、plt.show() を使ってプロットを表示します。
plt.show()
まとめ
このチュートリアルでは、Python の matplotlib.pyplot.hexbin() を使って六角形のビン付きプロットを作成する方法を学びました。numpy.random.standard_normal() と numpy.random.standard_normal() を使って乱数を生成し、六角形のビン付きプロットを作成し、対数カラースケールを追加し、plt.show() を使ってプロットを表示しました。