我正在寻找一个日志(基数为10)色标来为R中的SOM U矩阵绘图着色。具体来说,寻找一个colorRampPallette,它将在分布的低端具有比高颜色时更多的分色以原始单位编码。
我在https://stat.ethz.ch/pipermail/r-help/2006-July/110187.html找到了可能的线索,但这个解决方案似乎过于复杂。
我不知道从哪里开始,但怀疑有人已经解决了这个日志规模的调色板问题?
答案 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))))
总而言之,可以使用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)))