matplotlib散点图中的对数色条

时间:2013-06-19 20:56:47

标签: python matplotlib

我想使散点图上的点的颜色对应于空隙分数的值,但是在对数标度上以放大差异。我这样做了,但是现在当我执行plt.colorbar()时,它会显示空白分数的对数,当我真的想要实际的空隙分数时。如何使用适当的空白分数标签在颜色条上进行对数刻度,该标记属于[0.00001,1]?

这是我现在的情节图像,但是空白分数颜色条没有适当标记以对应真实的空隙分数,而不是它的对数。

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')

感谢您的帮助。

1 个答案:

答案 0 :(得分:59)

现在有一段描述how color mapping and normalization works的文档(这是开发文档的链接,但适用于所有版本的mpl。它将很快出现在主线文档中)

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进行转换,而不是自己动手。

  • Normalize doc
  • LogNorm doc
  • matplotlib.color doc