【问题标题】:Saving multiply pdf plots r保存乘法pdf图r
【发布时间】:2016-07-28 23:29:52
【问题描述】:

我已经制作了一个用于制作乘法图的循环,但是我无法保存它们,我的代码如下所示:

#----------------------------------------------------------------------------------------#
# RING data: Mikkel
#----------------------------------------------------------------------------------------#
# Set working directory
setwd()

#### Read data & Converting factors ####
dat <- read.table("Complete RING.txt", header =TRUE)  
str(dat)
dat$Vial <- as.factor(dat$Vial)
dat$Line <- as.factor(dat$Line)
dat$Fly <- as.factor(dat$Fly)  
dat$Temp <- as.factor(dat$Temp)
str(dat)

datSUM <- summaryBy(X0.5_sec+X1_sec+X1.5_sec+X2_sec+X2.5_sec+X3_sec~Vial_nr+Concentration+Sex+Line+Vial+Temp,data=dat, FUN=sum)
fl<-levels(datSUM$Line)

colors = c("#e41a1c", "#377eb8", "#4daf4a", "#984ea3")

meltet <- melt(datSUM, id=c("Concentration","Sex","Line","Vial", "Temp", "Vial_nr"))

levels(meltet$variable) <- c('0,5 sec', '1 sec', '1,5 sec', '2 sec', '2,5 sec', '3 sec')

meltet20 <- subset(meltet, Line=="20")
meltet20$variable <- as.factor(meltet20$variable)

AllConcentrations <- levels(meltet20$Concentration)

for (i in AllConcentrations) {
  meltet.i <- meltet20[meltet20$Concentration ==i,]
  quartz()
  print(dotplot(value~variable|Temp, group=Sex, data = meltet.i ,xlab="Time", ylab="Total height pr vial [mm above buttom]", main=paste('Line 20 concentration ', meltet.i$Concentration[1]),
                key = list(points = list(col = colors[1:2], pch = c(1, 2)),
                           text = list(c("Female", "Male")),
                           space = "top"), col = colors, pch =c(1, 2))) }

我尝试过使用quartz.save 函数,但这只会覆盖文件。如果这有什么不同,我正在使用 mac。

【问题讨论】:

  • this SO answer 有帮助吗?
  • 不,现在我只是得到一个没有内容的 pdf 文件...

标签: r loops pdf save


【解决方案1】:

当我想在一个循环中保存多个图时,我倾向于执行类似...

for(i in AllConcentrations){

meltet.i <- meltet20[meltet20$Concentration ==i,]

pdf(paste("my_filename", i, ".pdf", sep = ""))
  dotplot(value~variable|Temp, group=Sex, data = meltet.i ,xlab="Time", ylab="Total height pr vial [mm above buttom]", main=paste('Line 20 concentration ', meltet.i$Concentration[1]),
            key = list(points = list(col = colors[1:2], pch = c(1, 2)),
                       text = list(c("Female", "Male")),
                       space = "top"), col = colors, pch =c(1, 2))
dev.off()
}

这将为AllConcentrations 中的每个级别创建一个pdf 文件并将其保存在您的工作目录中。它将my_filename、迭代次数i.pdf 粘贴在一起,以使每个文件都是唯一的。当然,您需要在pdf 函数中调整高度和宽度。

【讨论】:

  • 我可以让它将文件保存为pdf,但它只是一个空的pdf?
  • 这可能与您在 Mac 上执行此操作有关?尝试在 dotplot 周围添加 print 函数,就像您在示例中那样。
猜你喜欢
  • 1970-01-01
  • 2013-07-26
  • 1970-01-01
  • 2015-10-02
  • 2011-01-17
  • 2020-05-15
  • 1970-01-01
  • 2020-01-30
  • 2021-05-30
相关资源
最近更新 更多