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'))  #自定义线条的类型
相关推荐
可乐鸡翅yeah_16 分钟前
hls.js 播放质量埋点实战,采集卡顿、起播、错误指标定位线上用户问题
开发语言·前端·javascript·ecmascript·音视频·m3u8·音视频在线播放
szarron33 分钟前
RF Demo Kit|NanoVNA 射频演示测试板完整上手教程,滤波器、衰减器、SOLT 校准学习板
开发语言·人工智能·学习·php·射频工程·频谱仪
边境悍匪44 分钟前
蜗牛学苑 Java 智能体学习 Day39|SpringAI 会话存储、Function‑Call 工具调用、MCP 思维导图复盘
java·开发语言·spring boot·学习·阿里云
万物智能信息科技1 小时前
RK3568 的多路显示移植—【万物智能之开源鸿蒙OpenHarmony系统实战开发系列教程】
linux·开发语言·华为·开源·harmonyos
蓝悦无人机1 小时前
Qt Design Studio(QDS)4.8.2项目文件结构详解
开发语言·qt·qt creator·qds·项目文件结构·qtc
yxlalm1 小时前
4.java秒杀项目第四课-后端商品后台接口
java·开发语言
孙启超2 小时前
【AI开发之Rust】第 1 课:认识 Rust 与开发环境 —— 装好工具链,跑通第一个程序
开发语言·人工智能·后端·ai·rust·安全架构
君顾12 小时前
家政派单小程序源码开发实战:从零搭建到上线全流程指南
java·开发语言·家政派单
我是唐青枫3 小时前
C#.NET PInvoke 深入解析:封送、内存布局与原生互操作实战
开发语言·c#·.net
程序猿编码3 小时前
纯C++轻量计算机视觉推理引擎:基于GGML的端侧CV模型部署技术全解析
开发语言·c++·计算机视觉·大模型·transformer