使用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)

解释:

  1. 首先生成了样本数据,其中df1有300行,df2有60行,均含有Gas、Date、Flux、Hybrid和Nrate等指标;
  2. 接下来对df1进行处理,使用ggplot绘制折线图,以Date为横坐标,Flux为纵坐标,Gas为分面,颜色为Hybrid;
  3. 对df2进行处理,使用ggplot绘制相同的折线图,但是使用了theme_void()将背景设置为透明;
  4. 最后使用annotation_custom()函数将df2的图形添加到df1的图形上,其中xmin和xmax控制小图形的横坐标范围,ymin和ymax控制小图形的纵坐标范围,这里设置为右上角的位置。

代码说明:

  • dplyr 包用于数据处理,例如筛选、分组和排序;
  • ggplot2 包用于创建图形,例如折线图和散点图;
  • facet_wrap() 函数用于将图形分成多个分面,每个分面对应一个Gas类别;
  • theme_void() 函数用于将图形背景设置为透明;
  • annotation_custom() 函数用于将一个图形添加到另一个图形中,例如将缩略图添加到主图形中。

通过以上代码,您可以在R语言中创建带缩略图的折线图,以更加直观地展示数据趋势。

使用dplyr和ggplot2在R语言中创建带缩略图的折线图

原文地址: https://www.cveoy.top/t/topic/mtPK 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录