R SF多边形中的打印箭头

R SF多边形中的打印箭头,r,spatial,sf,R,Spatial,Sf,在R中,从多边形的一个质心到另一个质心绘制曲线箭头的正确方法是什么 我尝试了图表包中的曲线箭头。但它在其他一些地方绘制箭头可能是由于不同的科迪纳系统 library(sf) nc <- st_read(system.file("shape/nc.shp", package="sf")) plot(st_geometry(nc)) nc$centroid<- st_centroid(nc$geometry) plot(nc$centroid, add=T, pch=3, col="re

在R中,从多边形的一个质心到另一个质心绘制曲线箭头的正确方法是什么

我尝试了图表包中的曲线箭头。但它在其他一些地方绘制箭头可能是由于不同的科迪纳系统

library(sf)
nc <- st_read(system.file("shape/nc.shp", package="sf"))
plot(st_geometry(nc))
nc$centroid<- st_centroid(nc$geometry)
plot(nc$centroid, add=T, pch=3, col="red")
库(sf)

nc从您的示例开始。要简化,只需使用前四个多边形:

> plot(st_geometry(nc)[1:4])
获取四个多边形质心。忽略警告:

> xy = st_coordinates(st_centroid(nc)[1:4,])
Warning messages:
1: In st_centroid.sf(nc) :
  st_centroid assumes attributes are constant over geometries of x
2: In st_centroid.sfc(st_geometry(x), of_largest_polygon = of_largest_polygon) :
  st_centroid does not give correct centroids for longitude/latitude data
并在质心之间绘制一些曲线箭头:

> curvedarrow(from=xy[2,],to=xy[1,],lcol="red", curve=.2)
> curvedarrow(from=xy[4,],to=xy[1,],lcol="red", curve=.2)
那一个是弯曲的,所以把它展平一点:

> curvedarrow(from=xy[4,],to=xy[1,],lcol="red", curve=.12)


我已将所有质心添加到此绘图中,因此您可以看到它正在绘制从质心到质心的曲线。

curvedarrow适合我。你用它做什么?当然,谢谢你的回答。但如果我尝试使用mapview,它会绘制一些直线。像exmaple mapview(nc$geometry)+mapview(nc$centroid)+mapview(curvedarrow(from=xy[2],to=xy[1],lcol=“red”,curve=.2))一样,这是一个新问题-制作一个可复制的示例并创建一个新问题-可能在gis.stackexchange.com上,而不是在这里,因为这里是gis相关问题的地方。