整个数据集描述了一个模块(或集群,如果您愿意)。
为了重现示例,数据集位于: https ://www.dropbox.com/s/y1905suwnlib510/example_dataset.txt?dl=0
(54kb 文件)
你可以读作:
test_example <- read.table(file='example_dataset.txt')
我想在我的情节中拥有的是
在图上,x 轴是我的时间点列,y 轴是数据集上的列,最后 3 列除外。然后我使用 facet_wrap() 按 ConditionID 列分组。
这正是我想要的,但我实现这一点的方法是使用以下代码:
plot <- ggplot(dataset, aes(x=Timepoints))
plot <- plot + geom_line(aes(y=dataset[,1],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,2],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,3],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,4],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,5],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,6],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,7],colour = dataset$InModule))
plot <- plot + geom_line(aes(y=dataset[,8],colour = dataset$InModule))
...
如您所见,它不是很自动化。我想过放一个循环,比如
columns <- dim(dataset)[2] - 3
for (i in seq(1:columns))
{
plot <- plot + geom_line(aes(y=dataset[,i],colour = dataset$InModule))
}
(plot <- plot + facet_wrap( ~ ConditionID, ncol=6) )
那是行不通的。我发现这个主题 Use for loop to plot multiple lines in single plot with ggplot2这与我的问题相对应。我尝试了使用 melt() 函数给出的解决方案。
问题是当我在我的数据集上使用 melt 时,我丢失了 Timepoints 列的信息以绘制为我的 x 轴。我就是这样做的:
data_melted <- dataset
as.character(data_melted$Timepoints)
dataset_melted <- melt(data_melted)
我尝试使用聚合
aggdata <-aggregate(dataset, by=list(dataset$ConditionID), FUN=length)
现在有了 aggdata,至少我有关于我拥有的每个 ConditionID 有多少个时间点的信息,但我不知道如何从这里开始并将其结合到 ggplot 上。
任何人都可以建议我一种方法。我知道我可以使用丑陋的解决方案,即使用 rbind 在循环中创建新数据集(也在该链接中给出),但我不想这样做,因为这听起来效率很低。我想学习正确的方法。
谢谢