仓库源文站点原文


layout: post title: 热图绘制中使用非均匀调色板 categories:


在绘制热图/颜色映射图时, 如果数据分布范围很大, 且不均匀, 使用均匀的线性颜色映射容易导致整个图的颜色比较单一, 无法表现数据的细节. 一种解决方法是使用非均匀的颜色映射, 也就是, 数据和颜色的对应不是线性的, 而是让各个范围内的数据数目尽量一致, 这样得到的图中颜色分布比较均匀, 能显示更多细节. 这种方法是我在GMT教学手册 晕染地图中看到的, 所以我就用gnuplot来复现一下这种绘图方式. 所用数据与示例中的相同, 来自MARINE GRAVITY FROM SATELLITE ALTIMETRY, 但范围稍小.

先来看看用常规的线性调色板效果如何.

可以看到如果绘制整个范围的话, 大部分值都分布在零附件, 所以整个画面上颜色比较均一, 很难看出细节.

下面我们根据数据分布的累积分布来设定调色板的映射关系. 大致意思就是将数据排序, 将每个颜色区间中包含的数据个数保持一种, 使用这样的颜色映射可以保证各种颜色呈现的面积大致相同, 所以能显示出更多细节.

接下来也可以添加山体阴影, 参考前一篇文章中的方法, 我这里就不重复了.

实际上, 如果我们看下数据的分布

可以发现, 分布是比较对称的, 累积分布函数在中心值附近接近线性, 所以只要我们将数据的取值范围限定在中心值附近, 一样可以得到与上面类似的图