2016-06-18 4 views
4

Ich habe ein Diagramm mit plot Funktion erstellt. Ich habe die Punktemarkierungen mit pch() und den Linientyp mit lty hinzugefügt. Im Legendenabschnitt wollte ich die Punkte und Linien zusammenführen. Ich habe merge=TRUE verwendet, aber es hat nicht funktioniert. Es zeigt nur den Linientyp an. Das gleiche gilt für merge=FALSE. In beiden Fällen ändert sich die Breite der Boxlegende nur geringfügig. Das ist es. Irgendeine Idee? HierR plot: Anzeige von Punkttyp und Linientyp in der Legende

ist der Beispielcode:

m<-1:10 
n<-runif(1:5) 

plot(m,type = "o", col="blue",main = "plot",xlab = "distance",ylab = "height") 
lines(n+2,type="o", pch=22,lty=6,col="red") 
lines(m-3,type="o", pch=17,lty=5,col="forestgreen") 

legend(x=2,y=8,c("R","S","T"),lty=c(1,6,5),pch=c(5,22,17), 
     cex=.8, col=c("blue","red","forestgreen"),merge = FALSE) 

Antwort

5

Leute gefragt haben Sie in einigen Spielzeug Code zu setzen. Dies ist wichtig, da es den Menschen einen Ausgangspunkt gibt, um Ihnen zu helfen. Eigentlich ist es nicht schwer das zu tun. Beachten Sie Folgendes:

set.seed(0); x1 <- rnorm(10); x2 <- rnorm(10); x3 <- rnorm(10) 
plot(x1, type = "b", pch = 19, lty = 1, col = 1, 
    ylim = range(c(x1,x2,x3))) ## both points and lines 
points(x2, pch = 19, col = 2) ## only points 
lines(x3, lty = 2, col = 3) ## only lines 
legend(6, 0.9*max(c(x1,x2,x3)), legend = c("x1", "x2", "x3"), 
     pch = c(19, 19, NA), lty = c(1, NA, 2), 
     col = c(1,2,3), text.col = c(1,2,3)) 

test

Verwenden NA zu kontrollieren, was Sie anzeigen möchten.


Follow-up

Ich habe die pch im legend() aufzunehmen. Wenn ich das aufgenommen habe, wird der Punkt an der rechten Spitze jeder Zeile in der Legende angezeigt. Gibt es eine Möglichkeit, sie zu zentrieren?

Großartig! Jetzt haben Sie Ihren Code in Ihre Frage eingefügt. Das Problem ist mit Ihrem letzten Anruf an legend(). Verwenden Sie nicht/set Argument merge:

legend(x=2,y=8,c("R","S","T"),lty=c(1,6,5),pch=c(5,22,17), 
     cex=.8, col=c("blue","red","forestgreen")) 

Dies wird tun, was Sie wollen.