我想始终从修复点连接配对数据( P2 在下面的数据中)。我曾尝试使用ggplot,但它似乎有很多行。 从以下数据示例:
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))
我想获得以下情节,例如字段A (保持点 P2 作为凝视值)
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))
假装情节:
library(ggplot2)
ggplot(output,aes(x=X, y=Y, group=Link)) +
geom_line()+ geom_point()+
theme_bw(base_size = 20)
答案 0 :(得分:2)
您可以使用geom_segment
。然后,您需要一个包含起点(x
,y
)和终点(xend
,yend
)的数据集。
这可以通过将数据与“P2”点连接起来,在每个“字段”({{1})内使用数据而不是“P2”点来实现})。在这里,我使用df[Point == "P2"][df[Point != "P2"], on = "Field"]
包进行连接,但可以通过几种不同的方式完成。
data.table
P.S。我添加了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))
只是为了更容易区分这个示例中的两个组。