gpt4 book ai didi

python - 将 xticks 和 yticks 放置在 imshow 图上的像素中心

转载 作者:行者123 更新时间:2023-11-30 22:15:39 25 4
gpt4 key购买 nike

我正在使用 matplotlib 绘制包含一些信息的热图,我想将 xticks 和 yticks 移动到中心。我在 stackoverflow 中搜索了之前的问题,但找不到适合该问题的问题。我附上我的代码和我得到的图像:

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

def plot():
intensity= np.random.rand(10,10)

matrix_intensity=np.matrix(intensity)
max_intensity=matrix_intensity.max()
min_intensity = matrix_intensity.min()
for e in range(len(intensity)):
for i in range(len(intensity[e])):
intensity[e][i]=float(intensity[e][i])/float(max_intensity)
np.random.seed(101)
cmap = colors.ListedColormap(['white','khaki', 'goldenrod','yellowgreen','mediumseagreen','darkcyan','tomato','indianred' ,'sienna','maroon'])
bounds = np.linspace(min_intensity/max_intensity,1,11).tolist()
norm = colors.BoundaryNorm(bounds, cmap.N)

img = plt.imshow(intensity, interpolation='none', origin='lower',extent=[0,len(intensity),0,len(intensity)],
cmap=cmap, norm=norm)

cb=plt.colorbar(img, fraction=0.1,cmap=cmap, norm=norm, boundaries=bounds,format='%.2f') #'%.2f')
cb.set_label(label='Ratio',fontsize=12,labelpad=10)
plt.ylabel('Origin',fontsize=11)
plt.xlabel('Destination',fontsize=11)
plt.title('Best route:',fontsize=10)
plt.suptitle('Best Solution:',fontsize=10)
plt.xticks(range(1,len(intensity)+1))
plt.yticks(range(1,len(intensity)+1))
plt.savefig('images/hello.png')
plt.show()

事实是,我希望 x 和 y 刻度线指出每个正方形的中心,否则绘制正方形就没有意义。有人知道如何解决这个问题吗?也许这个问题很明显,但所有语句的 matplotlib 文档有时很难理解。

Image of the problem

最佳答案

显而易见的解决方案可能会使用不同的范围,即让图像处于0.5len(intensity)+0.5<之间的范围内.

extent=[.5, len(intensity)+.5, .5, len(intensity)+.5]
img = plt.imshow(intensity, interpolation='none', origin='lower',extent=extent,
cmap=cmap, norm=norm)

关于python - 将 xticks 和 yticks 放置在 imshow 图上的像素中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50219454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com