【发布时间】:2018-05-25 13:04:17
【问题描述】:
只是想知道是否有人可以通过使用 ggplot2 的 for 循环来解决我在 R 中遇到的问题。我已经进行了一些聚类以找到随时间变化的数据模式。共有38种模式图,各种模式。聚类的输出是将所有 38 个图并排放置,这对于可视化非常有用。
但我想放大单个图形以放大它们以进行演示和清晰地查看模式。手动这很容易,但是,编写 38 个版本的相同脚本但每个版本中只有一个不同的集群非常乏味,所以我想创建一个 for 循环以便在一块快速代码中实现。我已经完成了这段代码(也有一些在线帮助),但是,我无法获得单独的 38 个图表的输出。代码本身可以工作,因为我可以指定一个集群,然后它会给我该特定集群的输出,但我想创建一个代码来创建所有 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
最后,对于标题 (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
【问题讨论】:
-
您可以使用
cluster列作为分组变量,用于自动生成不同的图。像这样的东西:www3.nd.edu/~steve/computing_with_data/13_Facets/facets.html。但是我们需要您的一些数据来帮助您。可能是来自 2-3 个不同集群的样本。 -
在循环结束时调用
ggsave,类似于ggsave(plot = g, file = paste0("plot_", cluster, ".png"))。您也可以使用paste来构建您想要的任何标题字符串。 -
大家好!非常感谢!尝试刻面无济于事,以及ggsave。没发生什么事 。我怀疑 for 循环不喜欢 df