2016-04-07 15 views
0

Ich habe eine Schleife gemacht mehrfach Plots für die Herstellung, jedoch habe ich keine Möglichkeit, sie zu retten, mein Code wie folgt aussieht:Speichern mehrfach pdf Plots r

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

ich mit der quartz.save Funktion versucht haben, aber das überschreibt nur die Dateien. Ich benutze einen Mac, wenn das einen Unterschied macht.

+0

Hilft [diese SO-Antwort] (http://stackoverflow.com/a/26811291/496488)? – eipi10

+0

Nein, jetzt bekomme ich nur eine PDF-Datei ohne Inhalt ... –

Antwort

2

Wenn ich mehrere Plots in einer Schleife speichern möchte ich neige dazu, so etwas wie ...

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

zu tun, um eine PDF-Datei für jede Ebene in AllConcentrations und speichern Sie sie in Ihrem Arbeitsverzeichnis Dies erstellen. Es wird zusammen my_filename, die Nummer der Iteration i und dann .pdf zusammen einfügen, um jede Datei einzigartig zu machen. Natürlich möchten Sie Höhe und Breite in der pdf Funktion anpassen.

+0

Ich kann es die Dateien als PDF speichern, aber es ist nur eine leere PDF? –

+0

Das mag damit zu tun haben, dass du das auf einem Mac machst? Versuchen Sie, die 'print' Funktion um' dotplot' hinzuzufügen, wie Sie es in Ihrem Beispiel haben. –

+0

Ja, das hat das Problem gelöst :) Vielen Dank –