我正在尝试使用R(使用map和wrld_simpl)在世界地图上绘制两个城市之间的线。
如何在两点之间找到平滑的界限?如果我在美国和澳大利亚之间画了一条线,它有三个不同的部分
require(rworldmap)
map("world", col="#f2f2f2", fill=TRUE, bg="white", lwd=0.05)
data(wrld_simpl)
US_lat = wrld_simpl$LAT[wrld_simpl$NAME == 'United States']
US_lon = wrld_simpl$LON[wrld_simpl$NAME == 'United States']
australia_lat = wrld_simpl$LAT[wrld_simpl$NAME == 'Australia']
australia_lon = wrld_simpl$LON[wrld_simpl$NAME == 'Australia']
lines(c(US_lon, US_lat), c(australia_lon, australia_lat))
这画了一条线,但是在美国和奥地利之间并不正确。我做错了什么?
答案 0 :(得分:2)
方法lines
采用x坐标的矢量x
和y坐标的y
。因此,您的行应如下所示:
lines(c(US_lon, australia_lon), c(US_lat, australia_lat))
如果您想要一个很棒的圈子,以下内容将起作用:
require(geosphere)
gc <- gcIntermediate(c(US_lon, US_lat), c(australia_lon, australia_lat), breakAt=TRUE, n=1000)
invisible(lapply(gc, lines, col='red', lwd=2))
答案 1 :(得分:1)
您还可以使用grid.curve():
绘制“曲线”grid.curve(US_lon, australia_lon, US_lat, australia_lat)
...你可以定义曲线的“外观”。