R语言自定义颜色

一、创建颜色梯度(渐变色)

在绘热图时,需要将数值映射到不同的颜色上,这时就需要一系列的颜色梯度colorRampPalette 函数支持自定义的创建一系列的颜色梯度。

代码示例:

R 复制代码
library(RColorBrewer)

x <- colorRampPalette(c("blue", "red"))(12)
scales::show_col(x) # 显示颜色效果
x # 显示颜色编码

函数的参数c("blue", "red") 指的是颜色从蓝色渐变到红色,12 代表创建长度为12的颜色梯度

有了颜色梯度之后,我们就可以方便的把数值映射到颜色梯度上。基本的思想是,将数值排序,然后得到每个数值在排序好的序列中的顺序,其实就是rank 函数的返回值,然后利用该顺序去获取颜色。

示例:

R 复制代码
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)

二、指定颜色

代码:

R 复制代码
scale_color_manual(values = c("#0073C2FF", "#EFC000FF", "#868686FF")) #自定义颜色

示例:

R 复制代码
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'))  #自定义线条的类型
相关推荐
2601_9638699511 分钟前
【计算机毕业设计】基于Java的潮牌购物网站系统的设计与实现
java·开发语言·课程设计
名字还没想好☜36 分钟前
Go 的 io.Reader/Writer 组合实战:io.Copy、TeeReader、MultiWriter 优雅处理数据流
开发语言·后端·golang·go·iphone
郝学胜-神的一滴1 小时前
Qt 高级编程 042:进度条从入门到自定义美化
开发语言·c++·qt·软件开发·用户界面
鸿芯微控科技1 小时前
压电纳米定位分辨率怎么测?噪声、带宽、最小可检测位移与Python分析
开发语言·python·噪声分析·压电执行器·纳米定位·位移测量
@小匠1 小时前
Spring Boot Nacos绑定 Map 时中文 key 导致启动失败:一次从复现到源码的排查实录
java·开发语言·前端
Knight_AL1 小时前
Lombok @Builder 踩坑:build() 前后对象类型不一样
android·java·开发语言
神明不懂浪漫2 小时前
【第五章】队列
开发语言·数据结构·经验分享·笔记·算法
吃好睡好便好2 小时前
MATLAB仿真框图3
开发语言·matlab·仿真·simulink
-银雾鸢尾-2 小时前
C#中的反射关键类-Type
开发语言·c#
大黄说说2 小时前
Java 与 Kotlin 混合开发避坑指南:老项目平滑迁移 Kotlin 实操手册
java·开发语言·kotlin