我正在使用带有默认“jet”贴图的colorbar,并将其与“hexbin”一起使用。我的箱子里的数量从0到1500左右。问题是一些六角形箱子中的最小值在1到10之间,而有些箱子有数百个。这意味着在喷射色图中,0到10范围作为颜色0出现 - 即,它与具有0计数的箱无法区分。我希望这些小值可见。如何使colormap执行以下操作:确保大于或等于N的bin值具有“visible”,这意味着与颜色映射中的0 bin值不同?
感谢。
答案 0 :(得分:2)
快速修复可以尝试绘制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'颜色(如蓝色 - >红色)和伽玛值。有伽玛> 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 )
答案 1 :(得分:0)
此外,还有mincnt
选项可以设置hexbin中的最小计数,这会使所有小于此数字的二进制数留空。这使得很容易区分喷射颜色方案中的零和一个计数。
hexbin( ...., mincnt=1)