Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何为具有离散对数步长的colarbar获取正确的刻度标签?_Python_Matplotlib_Colormap - Fatal编程技术网

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格式而不是常规字体。那些字体有点不同。使用标准字体很难创建正确的上标。