如何用R在世界地图中添加长/纬度点?

时间:2018-04-16 19:55:09

标签: r mapping

我正在尝试为世界地图添加点并为其着色。我有每个点的经度和纬度信息,但不知何故,结果点位于地图中的错误位置。 它必须与我正在使用的地图投影有关。 这是我想要添加到世界地图中的一些要点('位置'):

<div id="map"></div>
<script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap">
</script>

这是我的代码:

longitude   latitude    subspecies  
-54.8706    -67.4208    red  
-53.8057    -67.6862    red  
-53.9433    -67.4866    red  
-54.4833    -69.6666    red  
-54.3833    -66.5666    red  
-54.7333    -65.2       red  
-53.2333    -68.2       red  
-54.2666    -66.7333    red  
-52.7166    -68.5333    red  
-54.4       -66.55      red  
-52.08      -68.6012    red    
-54.2166    -66.8666    red  
-53.4       -68.0666    red  
-53.3       -68.2       red  
-35.2141    -75.516     blue  
-35.5656    -75.4556    blue  
-35.8177    -75.5352    blue  
-36.2046    -75.7549    blue  
-36.467     -75.8373    blue  
-36.7096    -75.9115    blue  
...

希望尽快解决这个问题。谢谢你的时间!

1 个答案:

答案 0 :(得分:0)

我想我发现了这些问题:1。你的纬度&amp;经度似乎是逆转的,2。对于蓝色亚种,你的y值似乎与它们应该有相反的符号。我做了一点dplyr来更改这些变量的名称以交换坐标,并更改了蓝色y值的符号。这是你期望它的样子吗?

library(tidyverse)

locations <- "longitude   latitude    subspecies  
-54.8706    -67.4208    red  
-53.8057    -67.6862    red  
-53.9433    -67.4866    red  
-54.4833    -69.6666    red  
-54.3833    -66.5666    red  
-54.7333    -65.2       red  
-53.2333    -68.2       red  
-54.2666    -66.7333    red  
-52.7166    -68.5333    red  
-54.4       -66.55      red  
-52.08      -68.6012    red    
-54.2166    -66.8666    red  
-53.4       -68.0666    red  
-53.3       -68.2       red  
-35.2141    -75.516     blue  
-35.5656    -75.4556    blue  
-35.8177    -75.5352    blue  
-36.2046    -75.7549    blue  
-36.467     -75.8373    blue  
-36.7096    -75.9115    blue  " %>%
    read_table2() %>%
# there are stray whitespaces coming in when I copy & paste from SO, so need to delete extra column
    select(-X4)

world_map <- map_data("world")
locations %>%
# need to swap longitude & latitude
# changing the names of longitude & latitude to x & y just for clarity
    rename(x = latitude, y = longitude) %>%
# somehow blue points have y values flipped
    mutate(y = ifelse(subspecies == "blue", y * -1, y)) %>%
    ggplot() +
        geom_polygon(aes(x = long, y = lat, group = group), data = world_map, fill = "grey21", color = "grey21") +
        geom_point(aes(x = x, y = y, color = subspecies)) +
        scale_color_identity() +
        coord_fixed() +
        xlab("") +
        ylab("")

reprex package(v0.2.0)创建于2018-04-17。