在python中的matplotlib颜色条上显示小值

时间:2011-12-11 02:45:46

标签: python graph plot matplotlib binning

我正在使用带有默认“jet”贴图的colorbar,并将其与“hexbin”一起使用。我的箱子里的数量从0到1500左右。问题是一些六角形箱子中的最小值在1到10之间,而有些箱子有数百个。这意味着在喷射色图中,0到10范围作为颜色0出现 - 即,它与具有0计数的箱无法区分。我希望这些小值可见。如何使colormap执行以下操作:确保大于或等于N的bin值具有“visible”,这意味着与颜色映射中的0 bin值不同?

感谢。

2 个答案:

答案 0 :(得分:2)

快速修复可以尝试绘制log(counts)而不是对hexbin的计数 - 这会扩展比例,以便压缩更高的计数而不计算更低的计数。 但请注意,您必须放置一个可视化值为log(counts)而不是counts的地方,否则一个随意的读者总会误解图表。

更好的方法可能是修改您正在使用的颜色贴图。 内置地图或多或少地线性地从“0”颜色变为“1”颜色。 为了使较低的值在颜色上的分布比较高的值更多,您需要一个非线性的颜色映射。

要执行此操作,您可以尝试matplotlib.colors,特别是matplotlib.colors.LinearSegmentedColormap.from_listhttp://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)