【问题标题】:How to avoid break lines in R world maps?如何避免 R 世界地图中的断线?
【发布时间】:2013-06-29 11:34:16
【问题描述】:

我需要在世界地图中可视化一些地理数据。我已经了解了流动数据的great circle mapping tutorial,结果似乎很奇怪。是这样的:

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

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() 这样的另一个函数也未能实现我的目标。

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

非常感谢!!

【问题讨论】:

  • gcIntermediate 有一个 breakAtDateLine 参数

标签: r world-map


【解决方案1】:

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

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

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

【讨论】:

  • 那么我怎么能改变世界地图的中心。我使用了这样的代码“map("world", col="#f2f2f2", fill=TRUE, bg="white",orientation=c(-10,167,0),lwd=0.05)"但它总是告诉我plot && coord$error 中的错误:在“x && y”中,“y”是错误的类型
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-05
  • 2016-03-23
  • 1970-01-01
相关资源
最近更新 更多