在绘热图时,需要将数值映射到不同的颜色上,这时就需要一系列的颜色梯度colorRampPalette 函数支持自定义的创建一系列的颜色梯度。
代码示例:
- library(RColorBrewer)
-
- x <- colorRampPalette(c("blue", "red"))(12)
- scales::show_col(x) # 显示颜色效果
- x # 显示颜色编码
函数的参数c("blue", "red") 指的是颜色从蓝色渐变到红色,12 代表创建长度为12的颜色梯度
有了颜色梯度之后,我们就可以方便的把数值映射到颜色梯度上。基本的思想是,将数值排序,然后得到每个数值在排序好的序列中的顺序,其实就是rank 函数的返回值,然后利用该顺序去获取颜色。
示例:
- library(RColorBrewer)
-
- colors <- colorRampPalette(c("blue", "red"))(5)
- scales::show_col(colors) # 显示颜色效果
- colors # 显示颜色编码
-
- plot(5:1, bg = colors[rank(5:1)], cex = 2, pch = 22)
代码:
scale_color_manual(values = c("#0073C2FF", "#EFC000FF", "#868686FF")) #自定义颜色
示例:
- library(ggplot2)
- library(ggpubr)
-
- # -------原始-------
- ggplot(mpg, aes(x = displ, y = hwy, color = drv, shape = drv)) +
- geom_point() +
- geom_smooth(se = F, method = 'loess') +
- theme_bw()
-
- # ---------自定义颜色-----------
- ggplot(mpg, aes(x = displ, y = hwy, color = drv, shape = drv, linetype = drv)) +
- geom_smooth(se = F, method = 'loess') +
- geom_point() +
- scale_linetype_manual(values = c('twodash', 'longdash', 'dashed')) +
- theme_bw() +
- scale_color_manual(values = c("#0073C2FF", "#EFC000FF", "#868686FF")) #自定义颜色
-
- # ---------自定义点的形状-----------
- show_point_shapes() +
- theme_classic() # 显示点的形状(ggpubr包内的函数)
-
- ggplot(mpg, aes(x = displ, y = hwy, color = drv, shape = drv)) +
- geom_point() +
- geom_smooth(se = F, method = 'loess') +
- theme_bw() +
- scale_color_manual(values = c("#0073C2FF", "#EFC000FF", "#868686FF")) +
- scale_shape_manual(values = c(15, 19, 17)) #自定义点的形状,分别为15, 19, 17。
-
- # ---------自定义线条的类型-----------
- show_line_types() # 显示线条类型(ggpubr包内的函数)
-
- ggplot(mpg, aes(x = displ, y = hwy, color = drv, shape = drv, linetype = drv)) +
- geom_point() +
- geom_smooth(se = F, method = 'loess') +
- theme_bw() +
- scale_color_manual(values = c("#0073C2FF", "#EFC000FF", "#868686FF")) +
- scale_shape_manual(values = c(15, 19, 17)) +
- scale_linetype_manual(values = c('twodash', 'longdash', 'dashed')) #自定义线条的类型