【问题标题】:Connect nearest neighbor point连接最近邻点
【发布时间】:2015-03-04 16:10:58
【问题描述】:

我有 30 个数据点的 x-y 坐标列表(图中的绿点),我想将它们连接在一起。

我如何在 R 中做到这一点?目前,我通过dist()计算了每个点之间的距离矩阵,以获得每个点的最近邻。然而,这会导致 30 对边...有时多条边连接到我不想要的同一点:(如何在 R 中解决这个问题?

  cities_num=10
  cor.matrix=matrix(0,nrow=cities_num,ncol=2)
  for (r in 1:cities_num){
  cor.matrix[r,]=c(sample(1:500, 1),sample(1:500, 1))}
  par(mar=c(4,4,2,4))
  plot(cor.matrix,pch=4,xlab="X coordinate",ylab="Y coordinate")
  centroid.x=mean(cor.matrix[,1])
  centroid.y=mean(cor.matrix[,2])
  bead_num=cities_num+20
  t=seq(0,pi*2,length=bead_num) 
  coords=t(rbind( centroid.x+sin(t)*10, centroid.y+cos(t)*10))
  for (point in 1:bead_num){
    symbols(x=coords[,1][point],y=coords[,2][point],circles=0.5,
            inches = FALSE, add = TRUE)
  }

【问题讨论】:

  • 您能否提供数据的格式以便我们可以处理一些事情?
  • 嗨,我刚刚包含了我的代码:) 基本上我希望能够通过线将所有符号点连接在一起。

标签: r lines nearest-neighbor


【解决方案1】:

不确定什么是“符号点”,并且您的代码中似乎有太多未定义的对象,所以我制作了自己的一组“点”。如果只是一个常规点,那么使用polygon:

 dat <- data.frame(s=sin(seq(pi,-pi,length=25)),
                    c=cos(seq(pi,-pi,length=25)) )
 png();
     plot(0,0, xlim=c(-1.5,1.5),ylim=c(-1.5,1.5) );
       with(dat, points(s,c));
       with(dat, polygon(s,c) ) 
 dev.off()

【讨论】:

  • 您好,感谢您的回复。我的点的 xy 坐标会不时移动,最后它不会是一个漂亮的圆圈。我之所以使用 symbol() 进行绘图是因为它下面有一个散点图(上图中的黑点)。在这种情况下,polygon() 是否仍然有效?
  • 没有理由多边形必须是正多边形。它可以像你喜欢的那样不规则。我以为你想要点之间的联系,并且你已经通过symbols 取得了成功。
猜你喜欢
  • 1970-01-01
  • 2015-11-27
  • 2013-06-06
  • 1970-01-01
  • 1970-01-01
  • 2020-04-19
  • 1970-01-01
  • 1970-01-01
  • 2021-12-26
相关资源
最近更新 更多