Линия границы США не добавляется на карты geom_map рассредоточенных регионов США.

У меня есть карта рассредоточенных частей в США. Это в следующем вопросе (который содержит ссылку на данные):

отображение с помощью ggplot2 geom_polygon сходит с ума после объединения данных

На это ответили очень хорошо. Затем я попытался добавить линию границы США, поэтому я добавил geom_path к ответному коду, но безрезультатно, он создает ту же карту, только содержащую рассредоточенные области.

library(ggplot2)
#library(tidyverse)
library(dplyr)
library(maps)
load("./data.rda")

usa <- map_data("usa")
shape_map <- tbl_df(fortify(shape, region="Name"))
colnames(shape_map) <- c("long", "lat", "order", "hole", "piece", "region", "group")


ggplot() +
    geom_path(data = usa, aes(long, lat, group=group))+
    geom_map(data=shape_map, map=shape_map, aes(long, lat, map_id=region)) +
    geom_map(
        data=filter(prop.test, season=="DJF"),
        map=shape_map, aes(fill=prop.mega, map_id=megaregion)
    )

Наша граница не нанесена

Я пробовал geom_polygon() и geom_maps(). нет разницы. В чем причина и как ее решить?

Большое вам спасибо за вашу помощь!


person BobbyF    schedule 27.01.2018    source источник
comment
подсказка: range(shape_map$long), range(shape_map$lat), range(usa$long), range(usa$lat)   -  person hrbrmstr    schedule 27.01.2018
comment
Большое тебе спасибо. Очень хороший намек. Я не очень хорошо разбираюсь в различных проекционных системах. Но этот намек заставил меня пойти и узнать о них больше.   -  person BobbyF    schedule 27.01.2018


Ответы (1)


Итак, проблема заключалась в различиях в прогнозах. Карта США была в системе UTM, восток и север указаны в метрах, но названы долготой и широтой. в то время как карта США была в системе координат широты и долготы. Я изменил форму непосредственно перед строкой укрепления в коде, как показано ниже:

library(ggplot2)
library(tidyverse)

usa <- map_data("usa", )

shape <- spTransform(shape, CRS("+proj=longlat +datum=WGS84"))
shape_map <- fortify(shape, region="Name")

colnames(shape_map) <- c("long", "lat", "order", "hole", "piece", "region", "group")

prop.test <- proptest.result[which(proptest.result$variable=="Upward N"),]

ggplot() +
  geom_map(
    data=usa, map=usa, aes(long, lat, map_id=region),
    color="#2b2b2b", fill="#00000000"
  ) +
  geom_map(
    data=shape_map, map=shape_map, 
    aes(long, lat, map_id=region)
  ) +
  geom_map(
    data=filter(prop.test, season=="DJF"),
    map=shape_map, aes(fill=prop.mega, map_id=megaregion)
  ) +
  viridis::scale_fill_viridis(direction=-1) +
  coord_map("polyconic") +
  ggthemes::theme_map()

и это полученная карта:

введите здесь описание изображения

person BobbyF    schedule 27.01.2018