使用带有 ggplot2 的 for 循环在数据框中绘制多个图形

用户9317212

只是想知道是否有人可以帮助解决我在 R 中使用 ggplot2 使用 for 循环遇到的问题。我已经进行了一些聚类以找到随时间变化的数据模式。总共有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<-subset(dataframAMIRllgc,cluster == 1:38) 更改为 == 1,或 15 等,或任何其他集群确实会产生该集群,但并非所有 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] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用ggplot2的图形

来自分类Dev

如何使用ggplot2在辅助轴上绘制带有反向barplot的多个时间序列?

来自分类Dev

ggplot2:使用ggplot2绘制曲线

来自分类Dev

ggplot2:使用循环绘制几个框

来自分类Dev

使用 ggplot2 - R 绘制数据框

来自分类Dev

如何使用ggplot2 [在R中]从数据帧中绘制带有水平误差线的多条线?

来自分类Dev

在ggplot2中使用for循环排列多个图形

来自分类Dev

如何使用 ggplot2 绘制带有类别变量的线条?

来自分类Dev

ggplot2注释,x轴中带有日期

来自分类Dev

ggplot2中带有下标的X标签

来自分类Dev

R中带有ggplot2的堆叠Barplot

来自分类Dev

带有ggplot2的R中的条形图

来自分类Dev

带有 dplyr 和 ggplot2 的函数中的 Tidyeval

来自分类Dev

dataframe2delta:如何使用ggplot2直接从数据框中绘制增量函数

来自分类Dev

在ggplot2中正确使用带有stat_summary的fun.data吗?

来自分类Dev

将ggplot2与名称中带有空格的列一起使用

来自分类Dev

在ggplot2中使用geom_sf时,将图像与带有注解_光栅

来自分类Dev

是否可以使用ggplot2在数据框之外从这些数据绘制箱形图?

来自分类Dev

对ggplot2中的多个图使用循环

来自分类Dev

使用ggplot2绘制反向ecdf

来自分类Dev

使用ggplot2绘制选定的列

来自分类Dev

如何在要在 ggplot2 图形中使用的表达式()中包含带有保存文本的对象?

来自分类Dev

针对多个因素绘制箱线图并使用ggplot2在R中覆盖原始数据

来自分类Dev

使用ggplot2的多个方面

来自分类Dev

使用多个方面播放 ggplot2 的图形

来自分类Dev

在ggplot2中使用ggrepel

来自分类Dev

如何使用ggplot2清理数据并创建图形?

来自分类Dev

R Shiny中的Ggplot2图形根据用户输入带有线

来自分类Dev

使用ggplot2绘制随时间变化的多个频率

Related 相关文章

  1. 1

    使用ggplot2的图形

  2. 2

    如何使用ggplot2在辅助轴上绘制带有反向barplot的多个时间序列?

  3. 3

    ggplot2:使用ggplot2绘制曲线

  4. 4

    ggplot2:使用循环绘制几个框

  5. 5

    使用 ggplot2 - R 绘制数据框

  6. 6

    如何使用ggplot2 [在R中]从数据帧中绘制带有水平误差线的多条线?

  7. 7

    在ggplot2中使用for循环排列多个图形

  8. 8

    如何使用 ggplot2 绘制带有类别变量的线条?

  9. 9

    ggplot2注释,x轴中带有日期

  10. 10

    ggplot2中带有下标的X标签

  11. 11

    R中带有ggplot2的堆叠Barplot

  12. 12

    带有ggplot2的R中的条形图

  13. 13

    带有 dplyr 和 ggplot2 的函数中的 Tidyeval

  14. 14

    dataframe2delta:如何使用ggplot2直接从数据框中绘制增量函数

  15. 15

    在ggplot2中正确使用带有stat_summary的fun.data吗?

  16. 16

    将ggplot2与名称中带有空格的列一起使用

  17. 17

    在ggplot2中使用geom_sf时,将图像与带有注解_光栅

  18. 18

    是否可以使用ggplot2在数据框之外从这些数据绘制箱形图?

  19. 19

    对ggplot2中的多个图使用循环

  20. 20

    使用ggplot2绘制反向ecdf

  21. 21

    使用ggplot2绘制选定的列

  22. 22

    如何在要在 ggplot2 图形中使用的表达式()中包含带有保存文本的对象?

  23. 23

    针对多个因素绘制箱线图并使用ggplot2在R中覆盖原始数据

  24. 24

    使用ggplot2的多个方面

  25. 25

    使用多个方面播放 ggplot2 的图形

  26. 26

    在ggplot2中使用ggrepel

  27. 27

    如何使用ggplot2清理数据并创建图形?

  28. 28

    R Shiny中的Ggplot2图形根据用户输入带有线

  29. 29

    使用ggplot2绘制随时间变化的多个频率

热门标签

归档