多个分组变量的折线图

Line chart for multiple grouped variables

我有大约 20 个变量,它们来自 4 个不同的来源。我想使用 ggplot.

为每个变量可视化跨源数据的变化情况

我认为折线图是可视化的好选择。我的 x 轴可以是每个响应,源的 4 行将向我展示数据在这 4 个数据源中的变化情况。我可以将 region 作为拆分变量以按区域可视化。

我的数据如下所示(为简单起见,我只提供了 2 个变量):

library(data.table)

set.seed(1200)

ID <- seq(1001,1100)
region <- sample(1:10,100,replace = T)
Var1_source1 <- sample(1:100,100,replace = T)
Var1_source2 <- sample(1:100,100,replace = T)
Var1_source3 <- sample(1:100,100,replace = T)
Var1_source4 <- sample(1:100,100,replace = T)
Var2_source1 <- sample(1:100,100,replace = T)
Var2_source2 <- sample(1:100,100,replace = T)
Var2_source3 <- sample(1:100,100,replace = T)
Var2_source4 <- sample(1:100,100,replace = T)

df1 <- as.data.table(data.frame(ID,
                                region,
                                Var1_source1,
                                Var1_source2,
                                Var1_source3,
                                Var1_source4,
                                Var2_source1,
                                Var2_source2,
                                Var2_source3,
                                Var2_source4))

我觉得这是一个独特的要求,因为我没有任何特定的东西可以绘制在我的 x 轴上

我不完全确定你希望你的描述中的情节是什么样子,但任何 ggplot 的第一部分都是获取长格式的数据。

library(tidyverse)

df2 <- gather(df1, group, value, - c(ID, region)) %>%
  separate(group, c("Var", "Source")) 

head(df2)
    ID region  Var  Source value
1 1001      2 Var1 source1    92
2 1002      4 Var1 source1    44
3 1003      5 Var1 source1    15
4 1004      6 Var1 source1    42
5 1005      5 Var1 source1    39
6 1006      6 Var1 source1    48

我们现在有一个可以在 ggplot 中使用的列。我不完全确定你想要绘制什么,但这是一个例子:

ggplot(df2, aes(x = region, y = value, colour = Source)) +
  stat_summary(fun.y = mean, geom ="line")

或者我们可以使用分面来拆分两个变量:

ggplot(df2, aes(x = region, y = value, colour = Source)) +
  stat_summary(fun.y = mean, geom ="line") +
  facet_grid(Var~.)