2016-04-07 11 views
0

Lassen Sie sagen, ich habe ein Daten wie diesewie zwischen jeder Zeile in einem Grundstück

M<- matrix(rnorm(20),20,5) 
x <- as.matrix(sort(runif(20, 5.0, 7.5))) 

Die M hat 5 Spalten mit den gleichen Werten ein Leerzeichen hinzuzufügen, die ich es darstellen möge, aber ich will nicht um sie aufeinander zu zeichnen. Ich möchte sie mit einem Leerzeichen zeigen. Was ich tue, ist wie unten

plot(x, M[,1], ylim=range(M), ann=FALSE, axes=T,type="l") 
Colm <- 2:ncol(M) 
lapply(seq_along(Colm),function(i){ 
    lines(x, M[,i], col=Colm[i]) 
}) 

Gibt es eine Möglichkeit, einen Abstand zwischen jeder Zeile in Handlung zu machen?

Antwort

0

Sie können jedem y-Wert eine kleine Änderung hinzufügen, um jede Zeile leicht zu verschieben.

set.seed(595) 
M <- matrix(rnorm(20),20,5) 
x <- as.matrix(sort(runif(20, 5.0, 7.5))) 

plot(NA, ylim=range(M), xlim=range(x), ann=FALSE, axes=T, type="l") 

# Amount by which to shift each y value 
eps = seq(-0.1, 0.1, length.out=ncol(M)) 

lapply(1:ncol(M), function(i){ 
    lines(x, M[,i] + eps[i], col=i) 
}) 

enter image description here

UPDATE: In Antwort auf Ihren Kommentar, ich denke, die folgende ist wahrscheinlich das, was passiert ist: In Ihrem Beispielcode ist x eine Matrix, die im wesentlichen das gleiche wie ein Vektor verhält, wenn Die Matrix hat nur eine Spalte. Somit gibt x einen Datenvektor zurück, so dass Sie einfach das Objekt x direkt in der lines Funktion verwenden können. Wenn Sie jedoch sind x als Datenrahmen (zum Beispiel Import x=read.table("x.txt", header=TRUE) verwenden, dann müssen Sie lines(x[,1], M[,i] + eps[i], col=i) in Ihrem Code verwenden, um den Vektor der Daten in der ersten Spalte des Datenrahmens zu erhalten x.

+0

Ich habe versucht, Ihre Funktion auf meine realen Daten, aber ich habe Fehler, dass X und Y sind nicht mit der gleichen Länge, die M finden Sie hier https://gist.github.com/anonymous/1f401d5c3b88fda66c01d7eabb3c6514 und das x sein kann finden Sie hier https://gist.github.com/anonymous/95fff534dbcf2d15d2b7a51fb78b87dd – nik

+0

Diese zwei Datenquellen haben die gleiche Anzahl von Zeilen, aber überprüfen Sie die tatsächlichen Datenobjekte in R, um sicherzustellen, 'x' und' M' in Ihren 'Zeilen' Funktion haben wirklich die gleiche Anzahl von Werten. – eipi10

+0

gibt es eine andere Möglichkeit, es zu plotten, die ich für meine realen Daten verwenden kann? – nik

Verwandte Themen