R - 每个面板有多行的面板图

时间:2016-07-22 13:33:42

标签: r graph ggplot2

我需要创建一个面板线图,其中每个面板在其中有多条线,每个面板使用相同的x和相同的y轴。我的数据集如下:

阿拉斯加州4 20 A
阿拉斯加州6 40 A
阿拉斯加州8 80 A
阿拉斯加州12 100 A
佛蒙特州4 10 A
佛蒙特州6 30 A
佛蒙特州8 50 A
佛蒙特州12 60 A
犹他州4 10 A
犹他州6 20 A
犹他州8 25 A
犹他州12 45 A
阿拉斯加州4 10 B
阿拉斯加州6 20 B
阿拉斯加州8 50 B
阿拉斯加州12 80 B
佛蒙特州4 30 B
佛蒙特州6 50 B
佛蒙特州8 60 B
佛蒙特州12 70 B
犹他州4 25 B
犹他州6 45 B
犹他州8 55 B
犹他州12 65 B
阿拉斯加州4 15 C
阿拉斯加州6 30 C
阿拉斯加州8 60 C
阿拉斯加州12 70 C
佛蒙特州4 15 C
佛蒙特州6 25 C
佛蒙特州8 45 C
佛蒙特州12 80 C
犹他州4 20 C
犹他州6 35 C
犹他州8 40 C
犹他州12 55 C

读取数据的代码是:

library(ggplot2);
data = read.table("test_set.dat");
names(data) <- c("Place", "Variable", "Value", "Condition");
data$Place <- as.factor(data$Place);
data$Variable <- as.factor(data$Variable);
data$Value <- as.numeric(data$Value);
data$Condition <- as.factor(data$Condition);

所以每个地方都需要一个面板。 X轴是可变的。 Y轴是值。每一行都应该是条件,并且应该有一个标题为&#34;条件&#34;的传奇。

我可以在ggplot2中执行此操作吗?

1 个答案:

答案 0 :(得分:1)

我首先使用reshape包的melt函数将数据转换为长格式。然后,我按照您的描述绘制数据,按条件分组并将地方分成平面。

library(reshape)
data_gather <- melt(data)

ggplot(data=data_gather, aes(x=Variable, y=value, group=Condition, color=Condition)) 
 + geom_line() 
 + facet_wrap(~ Place, ncol = 3)