如何从修复点连接几个点 - R.

时间:2017-01-17 20:21:24

标签: r plot ggplot2

我想始终从修复点连接配对数据( 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)  

1 个答案:

答案 0 :(得分:2)

您可以使用geom_segment。然后,您需要一个包含起点(xy)和终点(xendyend)的数据集。

这可以通过将数据“P2”点连接起来,在每个“字段”({{1})内使用数据而不是“P2”点来实现})。在这里,我使用df[Point == "P2"][df[Point != "P2"], on = "Field"]包进行连接,但可以通过几种不同的方式完成。

data.table

enter image description here

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)) 只是为了更容易区分这个示例中的两个组。