Python 如何为具有离散对数步长的colarbar获取正确的刻度标签?
我有一个散点图,在散点图上使用Python 如何为具有离散对数步长的colarbar获取正确的刻度标签?,python,matplotlib,colormap,Python,Matplotlib,Colormap,我有一个散点图,在散点图上使用matplotlib.colors.LogNorm对点进行了彩色映射。这给了我我想要的彩色地图比例,但我不能使它成为一个离散的彩色地图。 以下是我所拥有的: 我的目标是这样(忽略插图): 我能够在一定程度上成功地使用matplotlib.colors.BoundaryNorm,但似乎丢失了matplotlib.colors.LogNorm中有用的颜色栏格式: 谢谢您可以显式设置颜色条刻度的文本。以下是一个例子: 导入matplotlib.pyplot作为plt
matplotlib.colors.LogNorm
对点进行了彩色映射。这给了我我想要的彩色地图比例,但我不能使它成为一个离散的彩色地图。
以下是我所拥有的:
我的目标是这样(忽略插图):
我能够在一定程度上成功地使用matplotlib.colors.BoundaryNorm
,但似乎丢失了matplotlib.colors.LogNorm
中有用的颜色栏格式:
谢谢您可以显式设置颜色条刻度的文本。以下是一个例子:
导入matplotlib.pyplot作为plt
从matplotlib.colors导入BoundaryNorm、LogNorm
将numpy作为np导入
x=np.linspace(0,1,60)
y=np.linspace(0,1,60)
c=np.logspace(-4,1,60)
图,ax=plt.子批次()
sc1=ax.scatter(x,y,c=c,cmap='viridis',norm=LogNorm())
cbar1=plt.colorbar(sc1,ax=ax)
边界=np.幂(10.0,np.arange(-4,2))
n颜色=len(界限)-1
cmap=plt.cm.get_cmap('turbo',ncolors)
norm=边界norm(边界=边界,n颜色=n颜色)
sc2=最大散射(x,y+0+0.1,c=c,cmap=cmap,norm=norm)
cbar=plt.colorbar(sc2,ax=ax)
cbar.ax.set_yticklabels([f'$10^{{{np.log10(b):.0f}}}}$'用于边界中的b])
plt.show()
这太好了,谢谢。出于某种原因,彩色条的勾号标签显示为与我的其他绘图不同的字体。原因是什么?对于美元符号,matplotlib使用latex格式而不是常规字体。那些字体有点不同。使用标准字体很难创建正确的上标。