• R语言里一些画图程序不能在循环里正常保存的解决办法


    R语言里一些画图程序不能在循环里正常保存的解决办法

     
    这个目前只知其然不知其所以然,但是解决问题是可以的。
    Seurat里的DimPlot画图,单独使用的时候没有问题,用pdf+dev.off()可以正常输出保存图片,但是放在循环里却无法实现,原因不明。
    但是解决办法也很简单,加一个print函数就可以了。示例代码如下:
    pdf("abc.pdf")
    p1<-DimPlot(mouse.data)
    print(p1)
    dev.off()
     
    保存图片同样
     
    for( i in 1:length(allPathwayName)){
      this_pw <- allPathwayName[i]
      if(!(paste0(this_pw,'out.csv')%in%pwlist)){
        next
      }
      score <- read.csv(file = paste0(merge_savePath,this_pw,"out.csv"))
      score <- score[,2:5]
      colnames(score)[4] = this_pw
      expr_all_manifast_ <- merge(expr_all_manifast,score,by.x = "barcodes",by.y = "barcodes")
      
      png(filename=paste0(merge_savePath,this_pw,"_hist.png"), width=1200, height=900)
      p1 <- hist(expr_all_manifast_[,10],xlab = this_pw,main = paste0(this_pw,' score'))
      print(p1)
      dev.off()
      # create a dataset
      expr_all_manifast_$idents_res0.6 <- as.character(expr_all_manifast_$idents_res0.6)
      data <- expr_all_manifast_[which(expr_all_manifast_$idents_res0.6%in%c('7','8','9','16')),]
      #
      
      sample_lable <- paste0(data$source,'.',data$idents_res0.6)
      data <- cbind(data,sample_lable)
      
      day <- data$source
      for( i in 1:length(day)){
        if(day[i]%in%c('D0N','D0P')) day[i] = 'D0'
        if(day[i]%in%c('D2N','D2P')) day[i] = 'D2'
        if(day[i]%in%c('D4N','D4P')) day[i] = 'D4'
        if(day[i]%in%c('D7N','D7P')) day[i] = 'D7'
      }
      
      # sample size
      data <- cbind(data,day)
      day_lable <- paste0(data$day,'.',data$idents_res0.6)
      data <- cbind(data,day_lable)
      
      data <- data[-which((data$sample_lable%in%c("D0P.16","D2P.7","D7N.9","D7P.8","D7P.9","D2N.16","D2N.7"))),]
      sample_size = data %>% group_by(sample_lable) %>% summarize(num=n())
      
      fill_color <- data$source
      for(i in 1:length(fill_color)){
        if(fill_color[i]%in%c("D0N","D2N","D4N","D7N")) fill_color[i] = 'red'
        else fill_color[i] = 'blue'
      }
      jpeg(filename=paste0(merge_savePath,this_pw,"_samlable.png"), width=1500, height=500)
      
      p1 <- data %>%
        left_join(sample_size) %>%
        mutate(myaxis = paste0(sample_lable, "
    ", "n=", num)) %>%
        ggplot( aes(x=myaxis, y=data[,9], fill=fill_color)) +
        geom_violin(width=1.4) +
        geom_boxplot(width=0.1, color="grey", alpha=0.2) +
        scale_fill_viridis(discrete = TRUE) +
        theme_ipsum() +
        theme(
          legend.position="none",
          plot.title = element_text(size=11)
        ) +
        ggtitle(this_pw) +
        xlab("")+
        ylab("")
      print(p1)
      dev.off()
        
      sample_size <- data %>% group_by(day_lable) %>% summarize(num=n())
      jpeg(filename=paste0(merge_savePath,this_pw,"_daylable.png"), width=1000, height=500)
      
      p1 <- data %>%
        left_join(sample_size) %>%
        mutate(myaxis = paste0(day_lable, "
    ", "n=", num)) %>%
        ggplot( aes(x=myaxis, y=data[,9], fill=day)) +
        geom_violin(width=1.4) +
        geom_boxplot(width=0.1, color="grey", alpha=0.2) +
        scale_fill_viridis(discrete = TRUE) +
        theme_ipsum() +
        theme(
          legend.position="none",
          plot.title = element_text(size=11)
        ) +
        ggtitle("Propagation score") +
        xlab("")+
        ylab("")
      print(p1)
      dev.off()
        
      
    }
  • 相关阅读:
    nginx文件类型错误解析漏洞
    js 获取URL中的参数并转换为对象
    postman
    php curl参数详解
    php 两变量值互换 方法
    PHP 命名空间与spl_autoload_register() 自动加载机制
    php命名大小问题
    PHP实现冒泡排序
    使用 PHPStorm + Xdebug 实现断点调试(二)
    TSPL学习笔记(2):过程和变量绑定
  • 原文地址:https://www.cnblogs.com/shanyr/p/14509340.html
Copyright © 2020-2023  润新知