3

我需要在世界地图中可视化一些地理数据。我已经学习了 Flowing Data 的大圆映射教程,结果似乎很奇怪。如下所示:

结果在这里

显然我需要避免这些交叉的图片线。但我该怎么做呢?绘制地图的代码是这样的:

map("world", col="#f2f2f2", fill=TRUE, bg="white",lwd=0.05) 
for (j in 1:length(location$lon)) {
 inter <- gcIntermediate(c(lon_nj, lat_nj), c(location$lon[j], location$lat[j]),      n=100, addStartEnd=TRUE)
lines(inter, col="black", lwd=0.8)
}

我已经尝试了 gpe 提供的代码Automating great-circle map production in R

 map("world", col="#f2f2f2", fill=TRUE, bg="white",lwd=0.05) 
 for (j in 1:length(location$lon)) {
 inter <- clean.Inter(c(lon_nj, lat_nj), c(location$lon[j], location$lat[j]),n=100, addStartEnd=TRUE)
  lines(inter, col="black", lwd=0.8)
 }

结果是这样的: 互清法

而我只想用最短的距离到达所需的地方。

而来自网络的答案,比如使用像 greatCircle() 这样的另一个函数也未能实现我的目标。

那么有没有人知道如何实现这个目的?

非常感谢!!

4

1 回答 1

2

一种选择是切换到以太平洋为中心并分割大西洋的地图。这可能是最容易查看的。

另一种选择是检查 inter 对象(可能是带有 x 和 y 的列表,但我不熟悉使用的确切函数)并查看 x 坐标是否趋于增加或减少。寻找他们突然向另一个方向跳跃的地方并在那里插入一个 NA(并且在 y 值的同一位置),然后将不会显示穿过整个绘图的线。如果这不起作用,您可以在点之间的距离超过阈值的任何地方插入 NA。

另一个可能足够好的快速想法(部分取决于每条曲线使用多少点)是绘制点而不是线,使用points(inter, pch='.')而不是线命令。

于 2013-06-29T16:52:54.990 回答