2017-01-17 30 views
1

Ich möchte eine gepaarte Daten immer von einem Fixpunkt (P2 in den Daten unten) verbinden. Ich habe versucht, ggplot zu verwenden, aber es erscheint vielen Zeilen. aus den folgenden Daten Beispiel:So verbinden Sie mehrere Punkte von einem Fixpunkt - R

A <-c(rep("A",4)) 
B <-c(rep("B",5)) 
X1<-c(-1,5,3,6) 
X2<-c(5,0,2,9,3) 
Y1<-c(1,-5,0,4) 
Y2<-c(-6,0,1,9,-4) 

df <- data.frame (Field = c(A,B), 
     Point = c("P1","P2","P3","P4","P1","P2","P3","P4","P5"), 
     X= c(X1,X2), 
     Y= c(Y1,Y2)) 

Ich möchte folgende Handlung erhalten, wie für Feld A (Haltestelle P2 als staring Wert)

output <- data.frame (Link =c("AP2-AP1","AP2-AP1","AP2-AP3","AP2-AP3","AP2-AP4","AP2-AP4"), 
     X=c(5,-1,5,3,5,6), 
     Y=c(-5,1,-5,0,-5,4)) 

verstellte exemplifiziert Grundstück:

library(ggplot2) 
ggplot(output,aes(x=X, y=Y, group=Link)) + 
geom_line()+ geom_point()+ 
theme_bw(base_size = 20) 

Antwort

2

Sie können geom_segment verwenden. Dann benötigen Sie auf jeder Zeile einen Datensatz mit Startpunkten (x, y) und Endpunkten (xend, yend).

Dies kann durch Verbinden von Daten mit die "P2" Punkte, mit Daten ohne die "P2" Punkte innerhalb jeder "Field" (df[Point == "P2"][df[Point != "P2"], on = "Field"]) acheived werden. Hier verwende ich das data.table Paket für den Beitritt, aber es kann auf verschiedene Arten erfolgen.

library(data.table) 
setDT(df) 
ggplot(data = df, aes(X, Y, color = Field)) + 
    geom_point() + 
    geom_segment(data = df[Point == "P2"][df[Point != "P2"], on = "Field"], 
       aes(xend = i.X, yend = i.Y)) 

enter image description here

P. S. Ich habe color = Field nur hinzugefügt, um es einfacher zu machen, die zwei Gruppen in diesem Beispiel zu unterscheiden.

+0

Sorry, aber der folgende Fehler aufgetreten: _Error in '[.data.frame' (df, Punkt == "P2"): Objekt 'Punkt' nicht found_ Dennoch ist genau diese Handlung Ich dachte – Rui

+0

Excellent funktioniert es perfekt :) nur eine Anmerkung. in Farbe Klammern müssen entfernt werden, dh .: 'ggplot (Daten = df, aes (X, Y, Farbe = Feld))' – Rui

+0

Könnten Sie mir weiter helfen mit der Einstellung einer Farbe (oder Linientyp) für entsprechend der Steigung der Linie? Oder ist es besser, eine neue Frage zu stellen? – Rui

Verwandte Themen