物理の駅 by onsanai

Physics-station 研究で日々感じたことを忘れないための備忘録

pythonのmatplotlibで2次元ヒストグラムのビンコンテンツを直接操作する

pythonのmatplotlibで2次元ヒストグラムのビンコンテンツ (bin contents)を直接操作する方法はない。なので、 colormesh を使って描画しよう。

import matplotlib.pyplot as plt
import numpy as np

def f(x, y):
    return np.exp(-(x * x) / (2 * 3 ** 2)) * np.exp(-(y * y) / (2 * 3 ** 2))

X, Y = np.mgrid[-10:11, -10:11]
Z = f(X,Y)

fig, ax = plt.subplots()
im = ax.pcolormesh(X, Y, Z, cmap='inferno')
fig.colorbar(im)
plt.show()

このようにしてカラーマップを作成することが出来る。

f:id:onsanai:20190430232052p:plain
二次元ヒストグラムっぽい絵

普通のヒストグラム(一次元ヒストグラム)も、棒グラフを使ってヒストグラムっぽく表示することが出来る。

import matplotlib.pyplot as plt
import numpy as np
 
X = np.array([i for i in range(-10,10)])
Y = np.exp(-(X * X) / (2 * 3 ** 2))
plt.bar(X, Y, width=1.0)
plt.show()

f:id:onsanai:20190430233014p:plain
一次元ヒストグラムっぽい絵