二维直方统计与热图绘制

本文介绍对平面散点数据的分布使用 np.histogram2d进行二维直方分布统计并使用matplotlib绘制热图,用于单颗粒界面分布密度的可视化。

Pasted-image-20241201155726.png-c2070a386b.png

结果如上图,代码如下:

import numpy as np
import matplotlib.pyplot as plt
xx = np.random.rand(1000)*60
yy = np.random.rand(1000)*60
sampling = int(np.ptp(xx)/0.7/4)
print("采样次数",sampling)
print("采样窗口大小为 12σ:", 0.7*4, "μm")
xedges = np.linspace(xx.min(), xx.max(), sampling)
yedges = np.linspace(yy.min(), yy.max(), sampling)
H, xedges, yedges = np.histogram2d(xx, yy, bins=(xedges, yedges), density=False)
# 返回的H,列是x,行是y,如果要使用 plt.imshow 注意转置
# plt.figure(figsize=(4,4))
plt.imshow(H.T, interpolation='nearest', cmap=cmap, vmin=0, vmax=9)
# cmap 是自定义colormap
plt.gca().invert_yaxis()
# imshow时,行的索引是从上至下的,如要与原来的保持一致,注意反转
plt.axis("off")
plt.colorbar()
plt.show()