Matplotlib 散点图中的对数色条

我想使散点图上的点的颜色对应于空白分数的值,但是在一个放大差异的对数尺度上。我这样做了,但是现在当我执行 plt.Colorbar ()时,它显示 void 分数的 log,而我真正想要的是真正的 void 分数。如何使用属于[0.00001,1]的 void 分数的适当标签在颜色栏上制作对数缩放?

这是我现在得到的图像,但是 void 分数的颜色栏没有适当地标记为对应于真正的 void 分数,而不是它的对数。

current plot

fig = plt.figure()
plt.scatter(x,y,edgecolors='none',s=marker_size,c=np.log(void_fraction))
plt.colorbar()
plt.title('Colorbar: void fraction')

谢谢你的帮助。

105424 次浏览

现在有一部分文档描述 颜色映射和标准化是如何工作的

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

您只需要使用 LogNorm规范化类,该类是与 norm kwarg 一起传入的。

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

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