r - 按组划分的折线图

标签 r ggplot2

我有以下数据,我想根据 group1group2 变量创建一个折线图。

dat <- structure(list(group1 = structure(c(1L, 1L, 1L, 1L, 2L, 2L, 2L),
                                         .Label = c("a", "b"),
                                         class = "factor"),
                      group2 = c(1L, 2L, 3L, 4L, 1L, 2L, 3L),
                      val1 = c(10L, 3L, 2L, 7L, 10L, 3L, 2L),
                      val2 = c(8L, 4L, 8L, 5L, 8L, 4L, 8L),
                      val3 = c(7L, 5L, 6L, 9L, 7L, 5L, 6L)),
                 .Names = c("group1", "group2", "val1", "val2", "val3"),
                 class = "data.frame", row.names = c(NA, -7L))

理想情况下,我希望在每个组内有两个基于group1的图表(两个用于级别ab) 1 个变量我需要基于行变量的折线图(基本上连接 val1val2val3 的三个点)不同的 group2 变量具有不同的颜色。

最佳答案

你的意思是这样的吗:

dat2 <- with(dat, data.frame(group1 = rep(group1, each = 3), 
                             group2 = factor(rep(group2, each = 3)), 
                             values = stack(dat[,3:5])[,1]))

上面的代码将数据重组为更容易与 ggplot 一起使用的格式。 dat 是使用我添加到您的问题中的 dput() 代码定义的。我认为您想要的图可以通过

生成
p <- ggplot(dat2, aes(x = 1:3, y = values, colour = group2)) + geom_line() + 
        geom_point() + facet_wrap(~ group1, ncol = 2)
p

这给出了

ggplot line plot example

我基本上必须编写一些 x 数据,否则你怎么知道这些点应该位于 x 和 y 坐标空间中的位置?

关于r - 按组划分的折线图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5737071/

相关文章:

r - R 的 plyr 包是否不适用于 R 版本 3.0.2?

r - 如何在堆积条形图中使用百分比作为标签?

rgl: > rgl.clear(type, subscene = subscene) 中的错误:找不到对象 'rgl_clear'

r - R中基于最大数量的回填数据框

r - 如何以毫秒解析日期和时间,分布在多个列中?

r - 是否可以在带有 ggplot geom_sf 的 map 中使用单独的固定颜色

r - ggplot 和 holt winters 预测

r - 使用 facet_grid 时在 ggplot2 中指定自定义误差线

r - ggplot2:如何按颜色将图例拆分为自定义图例

r - R S4 类和 Matrix 包中重载 + 运算符