データセット全体がモジュール (または必要に応じてクラスター) を記述します。
例を再現するために、データセットは https://www.dropbox.com/s/y1905suwnlib510/example_dataset.txt?dl=0で入手できます。
(54kbファイル)
次のように読むことができます。
test_example <- read.table(file='example_dataset.txt')
私のプロットに入れたいのはこれです
プロットでは、x 軸は Timepoints 列で、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() 関数で与えられた解決策を試しました。
問題は、データセットでメルトを使用すると、x 軸としてプロットする Timepoints 列の情報が失われることです。これが私がした方法です:
data_melted <- dataset
as.character(data_melted$Timepoints)
dataset_melted <- melt(data_melted)
集計を使ってみた
aggdata <-aggregate(dataset, by=list(dataset$ConditionID), FUN=length)
少なくとも、aggdata を使用すると、ConditionID ごとに Timepoints の数に関する情報が得られますが、ここから先に進み、ggplot でこれを組み合わせる方法がわかりません。
誰でも私にアプローチを提案できますか?rbindを使用してループで新しいデータセットを作成するという醜いソリューションを使用できることは知っていますが(そのリンクにも記載されています)、非常に非効率的に聞こえるので、そうしたくありません。正しい方法で学びたい。
ありがとう