Python 使用对数比例时,Seaborn heatmap会在颜色栏上生成额外的刻度

Python 使用对数比例时,Seaborn heatmap会在颜色栏上生成额外的刻度,python,matplotlib,seaborn,Python,Matplotlib,Seaborn,我正在尝试用对数色条制作热图。但它会不断生成自己的刻度和刻度标签以及我输入的刻度和刻度标签 我最初发布的目的是将记号标签的格式从科学符号改为普通符号,但后来遇到了这个问题 将numpy导入为np 导入seaborn作为sns 从matplotlib.colors导入LogNorm 将matplotlib.ticker作为tkr导入 矩阵=np.随机.兰德(10,10)/0.4 vmax=2 vmin=0.5 cbar_ticks=[0.5,0.75,1,1.33,2] formatter=tkr

我正在尝试用对数色条制作热图。但它会不断生成自己的刻度和刻度标签以及我输入的刻度和刻度标签

我最初发布的目的是将记号标签的格式从科学符号改为普通符号,但后来遇到了这个问题

将numpy导入为np
导入seaborn作为sns
从matplotlib.colors导入LogNorm
将matplotlib.ticker作为tkr导入
矩阵=np.随机.兰德(10,10)/0.4
vmax=2
vmin=0.5
cbar_ticks=[0.5,0.75,1,1.33,2]
formatter=tkr.ScalarFormatter(useMathText=True)
格式化程序.set_scientific(False)
log_norm=LogNorm(vmin=vmin,vmax=vmax)
ax=sns.heatmap(矩阵,square=True,vmax=vmax,vmin=vmin,norm=log\u norm,cbar\u kws={“ticks”:cbar\u ticks,“format”:formatter})

对于对数轴,通常也会设置小刻度(它们有助于了解不同值的位置,并强制使用对数外观)。在这种情况下,默认标记仅包括一个标记(在
1.0
),这不足以看到哪个值对应于哪个颜色

使用
cbar_kws
只能更改主刻度。可以显式抑制次刻度:

将numpy导入为np
导入seaborn作为sns
从matplotlib.colors导入LogNorm
将matplotlib.ticker作为tkr导入
从matplotlib导入pyplot作为plt
矩阵=np.随机.兰德(10,10)/0.4
vmax=2
vmin=0.5
cbar_ticks=[0.5,0.75,1,1.33,2]
formatter=tkr.ScalarFormatter(useMathText=True)
格式化程序.set_scientific(False)
log_norm=LogNorm(vmin=vmin,vmax=vmax)
ax=sns.heatmap(矩阵,平方=True,vmax=vmax,vmin=vmin,norm=log_norm,
cbar_kws={“ticks”:cbar_ticks,“format”:formatter})
ax.collections[0].colorbar.ax.yaxis.set_ticks([],minor=True)
plt.show()

事实证明,这是matplotlib中的一个已知错误