用于对数数据的R色标?

时间:2017-09-24 10:44:28

标签: r

我正在寻找一个日志(基数为10)色标来为R中的SOM U矩阵绘图着色。具体来说,寻找一个colorRampPallette,它将在分布的低端具有比高颜色时更多的分色以原始单位编码。

我在https://stat.ethz.ch/pipermail/r-help/2006-July/110187.html找到了可能的线索,但这个解决方案似乎过于复杂。

我不知道从哪里开始,但怀疑有人已经解决了这个日志规模的调色板问题?

1 个答案:

答案 0 :(得分:1)

ggplot中的

可以使用scale_color_gradientn。以下是cars数据的示例。

ggplot(cars)+
  geom_point(aes(x = speed, y =dist, color = dist))+
  scale_color_gradientn(colors = colorRampPalette(colors = c("blue", "white"))(nrow(cars)), 
                        values = scales::rescale(log(sort(cars$dist))))

enter image description here

总而言之,可以使用colorRampPalette函数定义任意数量颜色的线性渐变,并且在scale_color_gradientn中,您可以将任何颜色映射到特定值 - 颜色的扩散可以是线性的,对数的或任意的。由于values参数接受0 - 1范围,因此scales::rescale用于对数转换值。

比较,这里没有转变

ggplot(cars)+
  geom_point(aes(x = speed, y =dist, color = dist))+
  scale_color_gradientn(colors = colorRampPalette(colors = c("blue", "white"))(nrow(cars)), values  = scales::rescale(sort(cars$dist)))

enter image description here