我如何使用R中的for循环创建多个图,每个图具有不同的y轴标签和标题?

问题描述 投票:0回答:1

[某些情况:我要分析的数据是流式细胞仪数据(对于那些不熟悉它的人,出于Q的目的,它基本上是使用激光表征不同的细胞类型)。这里的变量是要在y轴上绘制的单元格的不同特征,每个变量都是从“父组”中读取的。也就是说,如果目标变量是“活细胞”,则父组可以是“肾脏”细胞或“肺”细胞等。

我有一个包含13个变量的大数据表,需要针对相同的x轴(即,以周为单位的治疗时间)作图。我需要随时间绘制的每个变量都需要不同的y轴标签和标题,其中应包括y轴标签以及变量所属的各个“父组”的名称。我已采取的步骤是:

    将主数据表导入R

  • 用关键字,即每个变量名称(即主数据表中的列名称)以及其各自的Y轴标签和“父组”名称导入数据表。例如,这是该表的外观,
  • enter image description here

    您可以知道,“父组”名称或y轴标签不一定对每个变量名称都是唯一的

      将关键字数据表的每一列分配给新的向量,即变量,yaxis和parent。
    1. 进行FOR循环以自动从原始主表中子集数据,一次包含一个变量的信息,然后根据时间对其进行绘制。
  • r for(i in variables){ table<-as.data.frame(test[,c("WEEK",i)])` for(j in yaxis){ for (k in parent){ plot<-ggplot(table,aes(x=WEEK,y=table[,3]))+geom_line()+geom_point(size=2)+scale_shape_manual(values=1:25)+xlab("Weeks")+ylab(j)+theme_minimal()+ggtitle(paste0(k,"-",j)) ggsave(plot,file=paste0(paste(j,k,sep="_"),"plot.jpg"),width=14,height=10,units="cm") } } rm(table) rm(plot) }
    [我在这里试图做的是使for循环自动化,以为每个变量添加各自的y轴标签和标题,但是我当然陷入了一个循环,并继续进行并针对每个变量生成了13的组合y轴标签* 13个绘图标题组合。我需要13个图,每个图都有自己的y轴标签和图标题,而无需为每个图手动输入,因为我希望将图直接从for循环中导出为jpeg文件。我考虑过使用if或if else函数,但不确定如何在此处应用。任何帮助,将不胜感激! 

    [某些情况:我要分析的数据是流式细胞仪数据(对于那些不熟悉这是什么的人,出于Q的目的,它基本上是使用...]表征不同的细胞类型,这是...

    [这是一种解释您的问题的方法:使用构面图并将ParentYaxis映射到构面标签中。这将导致一系列构面图,其中标签反映ParentYaxis
    要进行方面分析,我们需要调整数据框的形状。首先,调用库并创建一些有用的数据:

    library(dplyr) library(tidyr) library(tibble) library(ggplot2) # make fake data data <- tibble( Week = seq(from = 1, length.out = 91), cells_live = runif(min = 1, max = 10, n = 91), cells_live_dividing = runif(min = 1, max = 10, n = 91), cells_live_aging = runif(min = 1, max = 10, n = 91) ) mapping <- tibble( variables = c("cells_live", "cells_live_dividing", "cells_live_aging"), Parent = c("COUNT", "live", "live"), Yaxis = c("live cells", "divinding cells", "aging") )

    然后我们使用pivot_longer中的tidyr将数据重整为长格式:

    data <- data %>%
      pivot_longer(cols = -Week,
                   names_to = "vars",
                   values_to = "values")
    

    然后我们使用left_join从映射表中引入数据,并基于ParentYaxis创建带有构面标签的新列:

    data <- data %>%
      left_join(mapping, by= c("vars" = "variables")) %>%
      mutate(facet_labels = paste0(Parent, ": ", Yaxis))
    

    最后,我们调用ggplot,其中我们将facet_labels用作构面变量:

    ggplot(data = data, aes(x = Week, y = values)) +
      geom_point() +
      facet_wrap(.~ facet_labels, scales = "free") +
      theme_minimal()
    

    使用此输出:

    enter image description here

    这并不是您所要的,但仍然希望对您有用。

  • r loops ggplot2 plot nested-loops
    1个回答
    0
    投票
    © www.soinside.com 2019 - 2024. All rights reserved.