多个分组变量的折线图
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~.)
我有大约 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~.)