python - 使小值在 python 中的 matplotlib 颜色条上可见

标签 python graph plot matplotlib binning

我将颜色条与默认的“jet”贴图一起使用,并将其与“hexbin”一起使用。我的垃圾箱中的计数范围从 0 到大约 1500。问题是,某些六边形垃圾箱中的最小值在 1 到 10 之间,而某些垃圾箱的计数为数百个。这意味着在 jet 颜色图中,0 到 10 的范围显示为颜色 0,即它与计数为 0 的 bin 无法区分。我希望这些小值是可见的。我怎样才能使颜色图做类似的事情:确保大于或等于 N 的 bin 值具有“可见”,即与颜色图中的 0 bin 值不同?

谢谢。

最佳答案

一个快速修复方法可以尝试绘制 log(counts) 而不是十六进制上的计数 - 这会扩展比例,从而压缩较高的计数而不会压缩较低的计数。 但请注意,您必须在某个地方放置可视化的值是 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 值。 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 )

关于python - 使小值在 python 中的 matplotlib 颜色条上可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8461605/

相关文章:

r - 绘制一个变量变化而其他变量不变的模型的函数

c# - C#的财务图表组件

python - 如何增加TreeView中显示的数据行数?

c++ - 图问题 : Find whether two nodes share the same branch in O(1) time and O(1) storage per node

python - 从其他文件导入模块,

python - 压缩 ASCII 稀疏图的最有效方法?

java - 我怎样才能在 java 中实现 XYLine jfreechart

python - 使用 DataFrame.plot 制作带子图的图表 -- 如何使用 ax 参数

Python--从一个非空的multiprocessing.Queue中获取Queue.Empty异常

python - 从 Pandas 的混合数据类型系列中选择具有给定数据类型的行