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))))
总之,可以定义任意数量的颜色的线性梯度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)))