75

我想让散点图上的点的颜色对应于空隙率的值,但在对数刻度上以放大差异。我这样做了,但是现在当我执行 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')

谢谢你的帮助。

4

1 回答 1

108

现在有一部分文档描述了颜色映射和规范化的工作原理

进行颜色映射的方法matplotlib分两步,首先是一个Normalize函数(由 的子类包装matplotlib.colors.Normalize),它将您提交的数据映射到[0, 1]. 第二步将值映射到[0,1]-> RGBA 空间。

您只需要使用通过kwargLogNorm传入的规范化类。norm

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

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

于 2013-06-19T22:06:07.420 回答