2016-04-07 2 views
0

Я сделал петлю для создания умножения участков, однако у меня нет никакого способа спасти их, мой код выглядит следующим образом:Сохранение многократно PDF участков г

#----------------------------------------------------------------------------------------# 
# 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, если это имеет значение.

+0

Помогает ли [этот ответ] (http://stackoverflow.com/a/26811291/496488)? – eipi10

+0

Нет, теперь я просто получаю pdf-файл без содержимого ... –

ответ

2

Когда я хочу, чтобы сохранить несколько участков в цикле, я склонен сделать что-то вроде ...

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() 
} 

Это позволит создать PDF-файл для каждого уровня в AllConcentrations и сохранить его в рабочем каталоге. Он будет вставлять вместе my_filename, номер итерации i, а затем .pdf вместе, чтобы сделать каждый файл уникальным. Конечно, вы захотите отрегулировать высоту и ширину в функции pdf.

+0

Я могу сохранить его как файл в формате pdf, но это просто пустой pdf-файл? –

+0

Это может быть связано с тем, что вы делаете это на Mac? Попробуйте добавить функцию 'print' вокруг' dotplot', как в вашем примере. –

+0

Да, что решило проблему :) Большое спасибо –

Смежные вопросы