Python matplotlibのhist2dでカラーバーをfigsなしで表示する方法

import matplotlib.pyplot as plt
import numpy as np

x = np.random.normal(0,1,10000) #平均0、標準偏差1、N=10000
y = np.random.normal(3,2,10000) #平均3、標準偏差2、N=10000

counts, xedges, yedges, im = plt.hist2d(x, y, range=[[-10,10],[-10,10]], bins=[100,100], cmap="binary")

plt.xlabel("X")
plt.ylabel("Y")
im.set_clim(0,50) #カラーバーの表示範囲
plt.colorbar(im,label="Entries") #カラーバーを表示しラベルをセット
plt.savefig("hist2d.pdf")
plt.show()

f:id:onsanai:20210707092815p:plain

カラーバーのスケールを対数(ログ)にする場合は、normを以下のように指定する。表示する範囲の下限値に0が使えないことに留意

import matplotlib.pyplot as plt
import matplotlib
import numpy as np

x = np.random.normal(0,1,10000)
y = np.random.normal(3,2,10000)
counts, xedges, yedges, im = plt.hist2d(x, y, range=[[-10,10],[-10,10]], bins=[100,100], cmap="binary", norm=matplotlib.colors.LogNorm())

plt.xlabel("X")
plt.ylabel("Y")
im.set_clim(0.1,100)
plt.colorbar(im,label="Entries")
plt.savefig("hist2d_log.pdf")
plt.show()

f:id:onsanai:20210707093135p:plain