首页 > 解决方案 > 绘制变量的第一个、第二个和第三个值的图形

问题描述

例如我有这个数据集:

c1 c2

A 1
A 3
A 10
B 5
B 4
C 3
C 4
C 6
A 5
C 7

是否有一种简短的方法可以在一张图中绘制 A、B、C 值的前三分之一、A、B、C 值的第二个三分之一以及 A、B、C 值的第三个第三个值。对于每个变量,将有 3 行。

所以一共有9行

标签: rdataframe

解决方案


你可以使用group_splitand lapply

df <- data.frame(c1 = rep(LETTERS[1:3], 3), c2 = sample(1:10, size = 9, rep = T))

df %>% 
  group_by(c1) %>%
  mutate(num = 1:n()) %>%
  group_split(num) -> plot_list
  

lapply(plot_list, function(x) {
  ggplot(x, aes(x = num, y = c2)) + geom_line()
})

或者你使用方面:

df %>% 
  group_by(c1) %>%
  mutate(num = 1:n()) %>%
  ggplot() + 
    facet_grid(scales = "free", cols = vars(num)) + 
    geom_line(aes(x = c1, y = c2, group = num))

在此处输入图像描述


推荐阅读