Python 如何在matplotlib二维直方图中居中放置仓位标签?

Python 如何在matplotlib二维直方图中居中放置仓位标签?,python,numpy,matplotlib,histogram,histogram2d,Python,Numpy,Matplotlib,Histogram,Histogram2d,如何在matplotlib pyplot 2d直方图的x和y方向上居中放置bin标签 我尝试了以下方法: 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)) p

如何在matplotlib pyplot 2d直方图的x和y方向上居中放置bin标签

我尝试了以下方法:

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()
它生成了这个图:


正如您所看到的,箱子标签没有居中。我如何编辑标签方案,使箱子标签(
[0,15]
[0,6]
)位于箱子的中心?

如果您的输入值是整数,您可以使用
箱子=[np.arange(-0.5,16,1),np.arange(-0.5,7,1)]
为16个选项(
(-0.5,0.5)、(0.5,1.5)、(14.5,15.5)

将numpy导入为np
将matplotlib.pyplot作为plt导入
#ns=np.random.randint(低=0,高=7,大小=200)
#dets=np.random.randint(低=0,高=16,大小=200)
ns=np.随机.均匀(低=0,高=6,大小=200)
dets=np.随机.均匀(低=0,高=15,尺寸=200)
plt.图()
hist、xedges、yedges、mesh=plt.hist2d(dets、ns、bins=[np.arange(-0.5,16,1),np.arange(-0.5,7,1)])
plt.色条(网眼)
plt.xticks(np.arange(0,16,1))
plt.yticks(np.arange(0,7,1))
plt.show()

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

将numpy导入为np
将matplotlib.pyplot作为plt导入
#ns=np.random.randint(低=0,高=7,大小=200)
#dets=np.random.randint(低=0,高=16,大小=200)
ns=np.随机.均匀(低=0,高=6,大小=200)
dets=np.随机.均匀(低=0,高=15,尺寸=200)
plt.图()
hist、xedges、yedges、mesh=plt.hist2d(dets、ns、bins=[np.arange(-0.5,16,1),np.arange(-0.5,7,1)])
plt.色条(网眼)
plt.xticks(np.arange(0,16,1))
plt.yticks(np.arange(0,7,1))
plt.show()

您的轴标签当前是数据值,而不是仓位标签。(如果您在随机生成的数据中更改
低位
高位
,这将更加明显。)通常,更有用的是了解数据是如何以自然单位分布的,而不是它位于哪个箱子中。你确定箱子号是你想要的吗?这回答了你的问题吗?在我的示例中,每个箱子应该是一个1宽的整数值乘以1高的整数值。数据是值介于0和6之间的数组(7个总选项)和介于0和15之间(16个总选项)。我想要标签上的值是x轴和y轴上的值(0,1,…,6和0,1,…,15)。轴标签当前是数据值,而不是bin标签。(如果在随机生成的数据中更改
,这将更加明显。)通常,更有用的是了解数据是如何以自然单位分布的,而不是它位于哪个箱子中。你确定箱子号是你想要的吗?这回答了你的问题吗?在我的示例中,每个箱子应该是一个1宽的整数值乘以1高的整数值。数据是值介于0和6之间的数组(7个总选项)和介于0和15之间(16个总选项)。我想要标签上的值是x轴和y轴上的值(0,1,…,6和0,1,…,15)。