【发布时间】:2020-11-18 07:23:15
【问题描述】:
例如我有这个数据集:
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行
【问题讨论】:
例如我有这个数据集:
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行
【问题讨论】:
您可以使用group_split 和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))
【讨论】: