matplotlib散点图中的对数色条

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空间.

你只需要使用LogNormnormkwarg 传入的规范化类.

plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,
                norm=matplotlib.colors.LogNorm())
Run Code Online (Sandbox Code Playgroud)

当您想要缩放/调整数据以进行绘图时,最好让matplotlib变换而不是自己进行变换.

  • Normalize DOC
  • LogNorm DOC
  • matplotlib.color DOC

  • 结果如图2所示.http://pubs.rsc.org/en/content/articlehtml/2014/cp/c3cp55039g我在确认中添加了Stack Overflow! (6认同)
  • 请根据您现在的理解建议对文档的编辑 (2认同)