我有大约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轴上没有任何特定的内容
答案 0 :(得分:1)
我不完全确定你希望你的描述中的情节如何,但任何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~.)