【matplotlib】2つのヒストグラムをhist2dを使って2次元カラープロットで表示する方法[Python]

  • URLをコピーしました!
目次

matplolib

前回、PyAutoGUIを使って自動でスクリーンショットを撮影する方法を紹介しました。

今回はmatplotlibの2つのヒストグラムをhist2dを使って2次元カラープロットで表示する方法を紹介します。

まずは2つのヒストグラム用データをこちらの記事を参考に作成しました。

import random
import matplotlib.pyplot as plt

x_list = range(10000)
data1 = [random.gauss(10, 2) for _ in x_list]
data2 = [random.gauss(20, 3) for _ in x_list]

fig = plt.figure()
plt.clf()

plt.hist(data1, bins=100, alpha=0.5)
plt.hist(data2, bins=100, alpha=0.5)

plt.show()

実行結果

今回はこの2つのヒストグラムを2次元カラープロットで表示してみます。

それでは始めていきましょう。

hist2d

2つのデータを2次元カラープロットで表示するにはmatplotlibの「hist2d」という関数を用います。

使い方は「hist2d(1つ目のデータ, 2つ目のデータ)」です。

import random
import matplotlib.pyplot as plt

x_list = range(10000)
data1 = [random.gauss(10, 2) for _ in x_list]
data2 = [random.gauss(20, 3) for _ in x_list]

fig = plt.figure()
plt.clf()

plt.hist2d(data1, data2)

plt.show()

このままだとあまりに分解能が悪すぎて大雑把なデータになっています。

データの分割数を上げてより細かくするには「bins」のオプション引数を追加します。

import random
import matplotlib.pyplot as plt

x_list = range(10000)
data1 = [random.gauss(10, 2) for _ in x_list]
data2 = [random.gauss(20, 3) for _ in x_list]

fig = plt.figure()
plt.clf()

plt.hist2d(data1, data2, bins=100)

plt.show()

色を変えるには「cmap」のオプション引数を追加します。

import random
import matplotlib.pyplot as plt

x_list = range(10000)
data1 = [random.gauss(10, 2) for _ in x_list]
data2 = [random.gauss(20, 3) for _ in x_list]

fig = plt.figure()
plt.clf()

plt.hist2d(data1, data2, bins=100, cmap="Reds")

plt.show()

実行結果

使用できるカラーマップはこちらのページを参考にしてください。

表示する範囲を変えるには「range=[[X軸の最小値, X軸の最大値],[Y軸の最小値, Y軸の最大値]]」を追加します。

import random
import matplotlib.pyplot as plt

x_list = range(10000)
data1 = [random.gauss(10, 2) for _ in x_list]
data2 = [random.gauss(20, 3) for _ in x_list]

fig = plt.figure()
plt.clf()

plt.hist2d(data1, data2, bins=100, range=[[5, 15], [10, 30]])

plt.show()

実行結果

カラーバーを表示するには「plt.colorbar()」で表示でき、hist2dのオプション引数に「vmin」、「vmax」を追加することで色調範囲を指定することができます。

import random
import matplotlib.pyplot as plt

x_list = range(10000)
data1 = [random.gauss(10, 2) for _ in x_list]
data2 = [random.gauss(20, 3) for _ in x_list]

fig = plt.figure()
plt.clf()

plt.hist2d(data1, data2, bins=100, vmin=5, vmax=12)

plt.colorbar()

plt.show()

実行結果

次回はNumPyで多変量正規分布に従う乱数を取得する方法(np.random.multivariate_normal)を紹介します。

ではでは今回はこんな感じで。

よかったらシェアしてね!
  • URLをコピーしました!

コメント

コメントする

目次