誰かがggplot2を使用してforループでRで発生している問題を解決できるかどうか疑問に思っていました。時間の経過とともに変化するデータのパターンを見つけるために、いくつかのクラスタリングを実行しました。全部で38のパターンのグラフで様々なパターンがあります。クラスタリングの出力は、視覚化に適した38個のグラフすべてを並べて配置することです。
しかし、私は個々のグラフにズームインして、プレゼンテーションとパターンのクリアビューのためにそれらにズームインしたいと思います。これは手動で簡単ですが、同じスクリプトの38バージョンを作成しますが、それぞれに異なるクラスターを使用するのは非常に面倒なので、クイックコードの1つのチャンクで実現するためにforループを作成したいと思います。私はこのコードを実行しましたが(オンラインでもいくつかの助けを借りて)、個々の38個のグラフの出力を取得できません。コード自体は、特定のクラスターの出力を提供する1つのクラスターを指定できるので機能しますが、38の異なるクラスターすべてを作成するコードを作成したいと思います。
私が使用しているコードは次のとおりです。
データフレームはdfllgcと呼ばれ、その中にdfllgc $ clusterには個々のクラスターに関する情報が含まれています。私が試みているforループは次のとおりですが、機能しません。どんな助けでも本当にありがたいです!
for(cluster in dfllgc$cluster){
df<-subset(dataframAMIRllgc,cluster == 1:38)
df$Time_point<-factor(df.s$Time_point, levels = c("p3", "p15", "p30","p60"))
g<-ggplot(df, aes(x=Time_point, y=abundance, group=llgc, colour=llgc))+
geom_line(size=1.5)+
geom_point(size=4)+
ggtitle("Cluster 29: Patterns over time (5 genes) \n") +
xlab("\nAge") + ylab("Expression(CPM)\n")
print(g) }
df <-subset(dataframAMIRllgc、cluster == 1:38)を== 1、15などに変更するか、他のクラスターを変更すると、実際にその1つのクラスターが生成されますが、すべての38が1:38になるわけではありません。
最後に、タイトル(ggtitle)を使用して、テンプレートを作成できるようにタイトルも自動化する方法はありますが、クラスター番号と遺伝子数が正しいクラスターに自動的に適用されますか?
どうもありがとうございます!どんな助けでも大歓迎です:)
サンプルデータ
merge cluster Time_point llgc abundance
1 High[26-50%]p15 1 p15 High[26-50%] 166.5400335
38 High[26-50%]p3 1 p3 High[26-50%] 255.5007952
75 High[26-50%]p30 1 p30 High[26-50%] 122.1110473
112 High[26-50%]p60 1 p60 High[26-50%] 78.84340532
149 Low[0-10%]p15 1 p15 Low[0-10%] 86.40962037
186 Low[0-10%]p3 1 p3 Low[0-10%] 205.9750297
223 Low[0-10%]p30 1 p30 Low[0-10%] 60.23843127
260 Low[0-10%]p60 1 p60 Low[0-10%] 56.64259547
297 Medium[11-25%]p15 1 p15 Medium[11-25%] 165.2372227
334 Medium[11-25%]p3 1 p3 Medium[11-25%] 223.3891249
371 Medium[11-25%]p30 1 p30 Medium[11-25%] 155.1325448
408 Medium[11-25%]p60 1 p60 Medium[11-25%] 176.8285175
2 High[26-50%]p15 2 p15 High[26-50%] 85.21789981
39 High[26-50%]p3 2 p3 High[26-50%] 211.5359752
76 High[26-50%]p30 2 p30 High[26-50%] 35.7475454
113 High[26-50%]p60 2 p60 High[26-50%] 12.87995477
150 Low[0-10%]p15 2 p15 Low[0-10%] 77.20608808
187 Low[0-10%]p3 2 p3 Low[0-10%] 43.04550979
224 Low[0-10%]p30 2 p30 Low[0-10%] 34.88976766
261 Low[0-10%]p60 2 p60 Low[0-10%] 9.791146582
298 Medium[11-25%]p15 2 p15 Medium[11-25%] 46.21377697
335 Medium[11-25%]p3 2 p3 Medium[11-25%] 34.89603178
372 Medium[11-25%]p30 2 p30 Medium[11-25%] 14.18668175
409 Medium[11-25%]p60 2 p60 Medium[11-25%] 7.360330065
3 High[26-50%]p15 3 p15 High[26-50%] 47.75793997
40 High[26-50%]p3 3 p3 High[26-50%] 62.3529071
77 High[26-50%]p30 3 p30 High[26-50%] 17.8348889
114 High[26-50%]p60 3 p60 High[26-50%] 14.26366778
151 Low[0-10%]p15 3 p15 Low[0-10%] 138.1451371
188 Low[0-10%]p3 3 p3 Low[0-10%] 185.1184602
225 Low[0-10%]p30 3 p30 Low[0-10%] 63.52332626
262 Low[0-10%]p60 3 p60 Low[0-10%] 39.40566363
299 Medium[11-25%]p15 3 p15 Medium[11-25%] 26.32551336
336 Medium[11-25%]p3 3 p3 Medium[11-25%] 49.72067928
373 Medium[11-25%]p30 3 p30 Medium[11-25%] 8.288553629
410 Medium[11-25%]p60 3 p60 Medium[11-25%] 5.385031193
あなたが何をしようとしているのかを100%理解しているかどうかはわかりませんが、サブセットに問題があると思います。最後に保存機能を追加する必要があります。うまくいけば、これはあなたが望むことをします:
dfllgc$Time_point<-factor(dfllgc$Time_point, levels = c("p3", "p15", "p30","p60"))
for(cluster in unique(dfllgc$cluster)) {
g<-ggplot( dfllgc[ dfllgc$cluster == cluster, ],
aes(x=Time_point, y=abundance, group=llgc, colour=llgc)) +
geom_line(size=1.5) +
geom_point(size=4) +
ggtitle( paste0("Cluster ", cluster,": Patterns over time (5 genes)") ) +
xlab("Age") + ylab("Expression(CPM)")
ggsave(paste0("Cluster_", cluster,".png"), g)
}
行われた変更:
ggplot
行に追加しましたが、同じように簡単に分離できます。factor
変換をforループの外に移動したため、一度だけ適用する必要があります。この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加