2016-12-05 11 views
0

ich die Layout-Funktion bin mit zwei Parzellen vereinbaren mit dem folgenden Code:Abstand und Grundstück Dimensionen in R mit Layout

#Set up layout 
m <- matrix(c(1,1,2, 1,1,2), nrow = 3, ncol = 2) 
layout(m) 

#First plot 
plot(data$WG,data$RPOP, pch=21, cex=0.8, col=data$circle, bg=data$fill, xaxt='n', yaxt='n', bty="L", xlab="", ylab="Y label 1",xlim=c(0.02,1), ylim=c(0.02,1))+axis(side=1, at=seq(0,1, .1), pos=-0.02, tck=-.01, labels=FALSE)+axis(side=2, at=seq(0,1, .1), pos=-0.02, tck=-.01, las=1) 

#Second plot 
datum<-data.frame(prop=c(0.027879, 0.031515,0.001212,0,0,0,0,0,0,0,0),freq=c(0, 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0)) 
plot(datum$freq,datum$prop, cex=0, xaxt='n', yaxt='n', bty="L", xlab="X label", ylab="Y label 2", xlim=c(0.02,1), ylim=c(0.001,0.05))+axis(side=1, at=seq(0, 1, 0.1), pos=-0.001, tck=-.01)+axis(side=2, at=seq(0, 0.05, 0.01), pos=-0.02, tck=-.01, las=1)+lines(datum$freq,datum$prop, lwd=2, col="red") 

Und das ist das Ergebnis, das ich das folgende Schaubild erhalten: enter image description here

Ich möchte den Abstand zwischen den beiden Graphen loswerden und gleichzeitig möchte ich, dass die Breite und Höhe des oberen Diagramms gleich sind. Gibt es eine Möglichkeit, dies mit der Layout-Funktion zu erreichen?

Antwort

1

Ändern Sie die Ränder, um die Plots näher zusammen zu bringen. Die Standardränder sind 5.1, 4.1, 4.1, 2.1 in der Reihenfolge unten, links, oben, rechts. Also werden wir den unteren Rand für das obere Diagramm kleiner und den oberen Rand für das untere Diagramm kleiner machen. Um die Ränder auf den Standard zurücksetzen, nachdem Sie fertig sind, tun par(mar=c(5,4,4,2) + 0.1):

#Set up layout 
m <- matrix(c(1,1,2, 1,1,2), nrow = 3, ncol = 2) 
layout(m) 

# Smaller bottom margin for top plot 
par(mar=c(1,4,4,2)) 

#First plot 
plot(data$WG,data$RPOP, pch=21, cex=0.8, col=data$circle, bg=data$fill, xaxt='n', yaxt='n', bty="L", xlab="", ylab="Y label 1",xlim=c(0.02,1), ylim=c(0.02,1))+axis(side=1, at=seq(0,1, .1), pos=-0.02, tck=-.01, labels=FALSE)+axis(side=2, at=seq(0,1, .1), pos=-0.02, tck=-.01, las=1) 

#Second plot 
datum<-data.frame(prop=c(0.027879, 0.031515,0.001212,0,0,0,0,0,0,0,0),freq=c(0, 0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9,1.0)) 

# Smaller top margin for bottom plot 
par(mar=c(5,4,1,2)) 

plot(datum$freq,datum$prop, cex=0, xaxt='n', yaxt='n', bty="L", xlab="X label", ylab="Y label 2", xlim=c(0.02,1), ylim=c(0.001,0.05))+axis(side=1, at=seq(0, 1, 0.1), pos=-0.001, tck=-.01)+axis(side=2, at=seq(0, 0.05, 0.01), pos=-0.02, tck=-.01, las=1)+lines(datum$freq,datum$prop, lwd=2, col="red") 

enter image description here

UPDATE: Eine Möglichkeit, einen Platz Grundstück zu bekommen wäre par(pty="s") gesetzt (die Standardeinstellung ist „m "), was ein 1/1 Seitenverhältnis ergibt. Nachdem Sie jedoch par(pty="m") für das zweite Diagramm zurückgesetzt haben, haben die zwei Diagramme möglicherweise nicht die gleiche Breite, und Sie müssten mit der Diagrammgröße herumspielen, um sie auszurichten.

Eine andere Option wäre, die Größe der Ausgabedatei so festzulegen, dass sie das gewünschte Seitenverhältnis erhält, wenn Sie sie unter png oder pdf speichern. Zum Beispiel:

png("test.png", 600, 800) 

... All of your plotting code, including call to layout... 

dev.off() 


pdf("test.pdf", 6, 8) 

... All of your plotting code, including call to layout... 

dev.off() 

Es ist wahrscheinlich eine programmatische Art und Weise das gewünschte Seitenverhältnis zu gewährleisten und die Plots korrekt ohne manuelle Anpassungen in einer Reihe aufstellen, aber ich bin nicht sicher, wie es zu tun.

+0

Das oberste Blatt scheint immer noch eine Breite zu haben, die länger ist als seine Höhe. –

+0

Entschuldigung, ich habe diesen Teil Ihrer Frage verpasst. Siehe Aktualisierung. – eipi10