2017-09-24 61 views
2

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

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

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

回答

1

in 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