Cok*_*kes 50 python matplotlib
我想使散点图上的点的颜色对应于空隙分数的值,但是在对数标度上以放大差异.我这样做了,但是现在当我执行plt.colorbar()时,它会显示空白分数的对数,当我真的想要实际的空隙分数时.如何使用属于[0.00001,1]的空白分数的适当标签在色条上进行对数刻度?
这是我现在拥有的图的图像,但是空隙分数颜色条没有被适当地标记为对应于真实的空隙分数,而不是它的对数.

fig = plt.figure()
plt.scatter(x,y,edgecolors='none',s=marker_size,c=np.log(void_fraction))
plt.colorbar()
plt.title('Colorbar: void fraction')
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
tac*_*ell 64
现在有一部分文档描述了颜色映射和规范化是如何工作的(这是开发文档的链接,但适用于所有版本的mpl.它将很快出现在主线文档中)
该方式matplotlib确实颜色映射是在两个步骤中,第一一个Normalize函数(由的亚类包裹起来matplotlib.colors.Normalize),你在交给所述数据映射[0, 1].第二步将值映射到[0,1]- > RGBA空间.
你只需要使用LogNorm与normkwarg 传入的规范化类.
plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,
norm=matplotlib.colors.LogNorm())
Run Code Online (Sandbox Code Playgroud)
当您想要缩放/调整数据以进行绘图时,最好让matplotlib变换而不是自己进行变换.