matplotlib 散点图中的对数颜色条
- 2025-04-16 08:57:00
- admin 原创
- 15
问题描述:
我想让散点图上点的颜色与空隙率的值相对应,但采用对数刻度来放大差异。我这样做了,但现在当我执行 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')
感谢您的帮助。
解决方案 1:
现在有一部分文档描述了颜色映射和规范化的工作原理
进行颜色映射的方法matplotlib
分为两步:第一步,用一个Normalize
函数(由 的子类包装matplotlib.colors.Normalize
)将你传入的数据映射到[0, 1]
。第二步,将值映射到[0,1]
-> RGBA 空间。
您只需要使用LogNorm
通过 kwarg 传入的规范化类norm
。
plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,
norm=matplotlib.colors.LogNorm())
当您想要缩放/调整数据以进行绘图时,最好让其matplotlib
进行转换,而不是自己进行。
Normalize
文档LogNorm
文档matplotlib.color
文档
解决方案 2:
tacaswell 的回答完全正确,但是有一个稍微简单一点的调用签名可以完成同样的事情:您只需传递 即可norm='log'
。例如:
plt.scatter(x,y,edgecolors='none',s=marker_size,c=void_fraction,norm='log')
散点图文档中提到了这一点,它还适用于其他颜色映射图,例如 pcolormesh。
(我意识到这是在评论中提到的,但是我第一次找到这个答案时忽略了那个评论。我认为这值得一个自己的答案。)
相关推荐
热门文章
项目管理软件有哪些?
热门标签
曾咪二维码
扫码咨询,免费领取项目管理大礼包!
云禅道AD