1

对于 matplotlib pyplot 2d 直方图,如何将 bin 标签居中在 x 和 y 中?

我尝试了以下方法:

import numpy as np
import matplotlib.pyplot as plt

ns = np.random.uniform(low=0,high=6,size=200)
dets = np.random.uniform(low=0,high=15,size=200)
plt.figure()
h = plt.hist2d(dets,ns,bins=(16,7))
plt.colorbar(h[3])
plt.xticks(np.arange(0,16,1))
plt.yticks(np.arange(0,7,1))

plt.show()

这产生了这个情节: 二维直方图

如您所见,bin 标签未居中。如何编辑标签方案以使 bin 标签 ([0,15][0,6]) 位于 bin 的中心?

4

1 回答 1

0

如果您的输入值是整数,您可以使用为 16 个选项 ( )bins=[np.arange(-0.5, 16, 1), np.arange(-0.5, 7, 1)]提供 17 个边界 ( )。[-0.5, 0.5, ..., 15.5](-0.5,0.5), (0.5,1.5), ..., (14.5,15.5)

import numpy as np
import matplotlib.pyplot as plt

# ns = np.random.randint(low=0, high=7, size=200)
# dets = np.random.randint(low=0, high=16, size=200)
ns = np.random.uniform(low=0, high=6, size=200)
dets = np.random.uniform(low=0, high=15, size=200)
plt.figure()
hist, xedges, yedges, mesh = plt.hist2d(dets, ns, bins=[np.arange(-0.5, 16, 1), np.arange(-0.5, 7, 1)])

plt.colorbar(mesh)
plt.xticks(np.arange(0, 16, 1))
plt.yticks(np.arange(0, 7, 1))
plt.show()

结果图

于 2020-06-17T19:42:31.797 回答