使用dplyr和ggplot2在R语言中创建带缩略图的折线图
使用dplyr和ggplot2在R语言中创建带缩略图的折线图
本教程演示了如何在R语言中使用dplyr和ggplot2包创建带缩略图的折线图。
示例代码:
library(dplyr)
library(ggplot2)
# 生成样本数据
set.seed(123)
df1 <- data.frame(
Gas = rep(c('Gas1', 'Gas2', 'Gas3'), each = 100),
Date = rep(seq(as.Date('2021-01-01'), by = 'day', length.out = 100), times = 3),
Flux = rnorm(300, mean = 10, sd = 2),
Hybrid = rep(c('Hybrid1', 'Hybrid2'), each = 150),
Nrate = rpois(300, lambda = 5)
)
df2 <- data.frame(
Gas = rep(c('Gas1', 'Gas2', 'Gas3'), each = 20),
Date = rep(seq(as.Date('2021-01-01'), by = 'day', length.out = 20), times = 3),
Flux = rnorm(60, mean = 8, sd = 1),
Hybrid = rep(c('Hybrid1', 'Hybrid2'), each = 30),
Nrate = rpois(60, lambda = 3)
)
# df1折线图
df1_plot <- df1 %>%
ggplot(aes(x = Date, y = Flux, color = Hybrid)) +
geom_line() +
facet_wrap(~ Gas, ncol = 3) +
theme(legend.position = 'none')
# df2折线图
df2_plot <- df2 %>%
ggplot(aes(x = Date, y = Flux, color = Hybrid)) +
geom_line() +
theme_void() +
theme(legend.position = 'none')
# 合并图形
df1_plot +
annotation_custom(ggplotGrob(df2_plot), xmin = as.Date('2021-06-30'), xmax = as.Date('2021-07-01'), ymin = 12, ymax = 14)
解释:
- 首先生成了样本数据,其中df1有300行,df2有60行,均含有Gas、Date、Flux、Hybrid和Nrate等指标;
- 接下来对df1进行处理,使用ggplot绘制折线图,以Date为横坐标,Flux为纵坐标,Gas为分面,颜色为Hybrid;
- 对df2进行处理,使用ggplot绘制相同的折线图,但是使用了theme_void()将背景设置为透明;
- 最后使用annotation_custom()函数将df2的图形添加到df1的图形上,其中xmin和xmax控制小图形的横坐标范围,ymin和ymax控制小图形的纵坐标范围,这里设置为右上角的位置。
代码说明:
dplyr包用于数据处理,例如筛选、分组和排序;ggplot2包用于创建图形,例如折线图和散点图;facet_wrap()函数用于将图形分成多个分面,每个分面对应一个Gas类别;theme_void()函数用于将图形背景设置为透明;annotation_custom()函数用于将一个图形添加到另一个图形中,例如将缩略图添加到主图形中。
通过以上代码,您可以在R语言中创建带缩略图的折线图,以更加直观地展示数据趋势。
原文地址: https://www.cveoy.top/t/topic/mtPK 著作权归作者所有。请勿转载和采集!