2013-04-05 14 views
5

Die gezeigte Plot wird mit dem folgenden R-Code erzeugt.Zwei Plots mit gleicher X- und Y-Achse

png("test.png") 
plot(data[,4],data[,3],type='l',col="green") 
par(new=TRUE) 
plot(data[,4],data[,2],type='l',col="red") 
dev.off() 

Der Bereich der Y-Achse ist für beide Diagramme unterschiedlich und wird wie in der Abbildung gezeigt überschrieben. Könnte jemand helfen, den gleichen Y-Achsenbereich für beide Plots festzulegen?

enter image description here

+6

Versuchen Linien() unter Verwendung der zweiten Zeile hinzuzufügen. – ndoogan

+0

Warum nicht "Achsen = FALSE" für die zweite verwenden. – agstudy

Antwort

5

Wenn die y Skalen weitgehend überlappen, dann können Sie sich einen ersten Plot machen, die das gesamte Spektrum umfasst (ohne darauf zu Plotten etwas) um die Achsen zu definieren, dann zeichnen Sie die Linien.

set.seed(5) 
data <- data.frame(1:60, rnorm(60, 0.6, 0.1), rnorm(60, 0.65, 0.15), 
        seq(2,120,by=2)) 

Mit type='n' richtet die Achsen, aber nicht alles planen. Wenn Sie den Bereich aller Daten verwenden, stellen Sie sicher, dass das Diagramm alle Daten umfasst.

plot(range(data[,4]), range(c(data[,3],data[,2])), type='n') 
lines(data[,4], data[,3], type='l', col='green') 
lines(data[,4], data[,2], type='l', col='red') 

enter image description here

+0

@ agstudy, @ Brian Diggs: Danke !! – chas

3

können Sie diese Methode verwenden:

  1. die erste Handlung zeichnen
  2. Anruf par(new=TRUE)
  3. das zweite Grundstück auf dem ersten Grundstück ziehen. Die zweite Handlung keine Standardachsen zeichnen (axes=FALSE)

Wenn die zweite Handlung verschiedenen y des ersten hat, können Sie die axis() Funktion verwenden, um eine sekundäre y-Achse zu zeichnen, auf dem rechten die Skala darzustellen.

Zum Beispiel können Sie etwas tun:

data <- matrix(rnorm(4*100),ncol=4) 
par(mar=c(5, 6, 2, 4)) 
plot(1:100,data[,3], lwd=3, col="green", ann=FALSE, las=2,type='l') 
mtext("I am at left", side=2, line=3.5) 
par(new=TRUE) 
plot(1:100,data[,2], ann=FALSE, axes=FALSE,col='red',type='l') 
mtext("I am at right)", side=4, line=2) 
title("Using par(new=TRUE) \n same X and different or not Y axis ") 
axis(4) 

enter image description here

Verwandte Themen