我将颜色条与默认的“jet”地图一起使用,并将其与“hexbin”一起使用。我的垃圾箱中的计数范围从 0 到大约 1500。问题是某些六边形垃圾箱中的最小值在 1 到 10 之间,而有些垃圾箱的计数为数百。这意味着在 jet 颜色图中,0 到 10 范围作为颜色 0 出现——即它与计数为 0 的 bin 无法区分。我希望那些小的值是可见的。如何使颜色图执行以下操作:确保大于或等于 N 的 bin 值具有“可见”,这意味着与颜色图中的 0 bin 值不同?
谢谢。
我将颜色条与默认的“jet”地图一起使用,并将其与“hexbin”一起使用。我的垃圾箱中的计数范围从 0 到大约 1500。问题是某些六边形垃圾箱中的最小值在 1 到 10 之间,而有些垃圾箱的计数为数百。这意味着在 jet 颜色图中,0 到 10 范围作为颜色 0 出现——即它与计数为 0 的 bin 无法区分。我希望那些小的值是可见的。如何使颜色图执行以下操作:确保大于或等于 N 的 bin 值具有“可见”,这意味着与颜色图中的 0 bin 值不同?
谢谢。
一个快速的解决方法是尝试log(counts)
在 hexbin 上绘制而不是计数 - 这将扩展比例,从而压缩较高的计数而不会压缩较低的计数。但请注意,您必须将可视化的值放在某个地方,log(counts)
否则counts
不经意的读者会不可避免地误解图表。
更好的方法可能是修改您正在使用的颜色图。内置地图或多或少地从“0”颜色线性变为“1”颜色。为了使较低的值比较高的值具有更多的颜色分布,您需要一个非线性颜色图。
为此,您可以尝试matplotlib.colors
,特别是matplotlib.colors.LinearSegmentedColormap.from_list
(http://matplotlib.sourceforge.net/api/colors_api.html#matplotlib.colors.LinearSegmentedColormap.from_list)
基本上,您输入“0”和“1”颜色(如蓝色->红色)和伽玛值。gamma > 1.0 会增加标尺下部的灵敏度。
如果没有尝试过,但类似:
import matplotlib.colors as colors
# colourmap from green to red, biased towards the blue end.
# Try out different gammas > 1.0
cmap = colors.LinearSegmentedColormap.from_list('nameofcolormap',['g','r'],gamma=2.0)
# feed cmap into hexbin
hexbin( ...., cmap=cmap )
此外,还可以mincnt
选择在 hexbin 中设置最小计数,这会将小于此数字的所有 bin 留空。这使得在喷射配色方案中区分零计数和一计数变得非常容易。
hexbin( ...., mincnt=1)