Matplotlib 勾选颜色之间的标签(离散着色器)

Matplotlib 勾选颜色之间的标签(离散着色器),matplotlib,axis-labels,colorbar,Matplotlib,Axis Labels,Colorbar,嗨,我想把标签放在颜色之间(间隔的中心),图形是用离散的颜色绘制的。但最小值不是0。我如何编写代码来实现这一点? 我用下面的代码来做这件事,但我得到的是错误的 n_clusters = len(cbar_tick_label) tick_locs = (np.arange(n_clusters)+0.5)*(n_clusters-1)/(n_clusters) cbar.set_ticks(tick_locs) cbar.set_ticklabels(cbar_tick_label) 此代码来

嗨,我想把标签放在颜色之间(间隔的中心),图形是用离散的颜色绘制的。但最小值不是0。我如何编写代码来实现这一点? 我用下面的代码来做这件事,但我得到的是错误的

n_clusters = len(cbar_tick_label)
tick_locs = (np.arange(n_clusters)+0.5)*(n_clusters-1)/(n_clusters)
cbar.set_ticks(tick_locs)
cbar.set_ticklabels(cbar_tick_label)
此代码来自问题:。但当数据的最小值不为零时,它不起作用。
谢谢

假设存在
N个
(例如6个)集群。如果将从最低数字(例如
5
)到最高数字(例如
10
)的范围细分为
N
相等的部分,则颜色单元格之间的每个边框都会有一个勾号。细分为
2*N+1
相等的部分,每个颜色单元的中心也会有一个勾号。现在,每跳过一次这些
2*N+1
ticks将只剩下细胞中心。因此,
np.linspace(5,10,6*2+1)
是边界和中心的记号;使用
np.linspace(5,10,6*2+1)[1::2]
将只是中心

将numpy导入为np
将matplotlib.pyplot作为plt导入
x、 y=np.rand.rand(2100)
c=np.random.randint(5,11,x.shape)
n_集群=c.max()-c.min()+1
图,ax=plt.子批次()
cmap=plt.get\u cmap('inferno\u r',n\u集群)
散射=最大散射(x,y,c=c,cmap=cmap)
cbar=plt.颜色条(scat)
tick_locs=np.linspace(c.min(),c.max(),2*n_集群+1)[1::2]
cbar_tick_label=np.arange(c.min(),c.max()+1)
cbar.设置刻度(刻度位置)
cbar.set_tick标签(cbar_tick_标签)
plt.show()

成功了,谢谢!