Создание chopopleth zip-кода в R с помощью ggplot2 и ggmap

Я пытаюсь сделать choropleth очень простых данных, и это своего рода боль в шее. У меня есть следующие почтовые индексы в Восточной Америке. Это составленные данные, но вы получаете идею.

Zip    Freq
11101    10
10014    15
11238   400

и т.д.. около 100 строк. Значения Freq варьируются от 0 до 1000, и это те, которые я хотел бы использовать для определения цвета каждого почтового индекса. В идеале я бы также хотел, чтобы карта сосредоточилась на Восточной США, а не на всей стране.

Я хочу сделать choropleth с этими данными и каждым почтовым индексом, но я не могу понять, как импортировать шейп файлы zip-кода. Я пробовал этот учебник, но у меня возникла ошибка на этапе fortify(), который я не могу преодолеть. Я не уверен, что этот метод обучения - это даже лучший способ сделать это.

ggplot2, похоже, поставляется с государством и округом, но я не могу понять, как сопоставить почтовый индекс. (В конце концов я собираюсь отобразить по переписному тракту, но прямо сейчас я просто хочу узнать, как использовать шейп файлы для почтовых индексов и этот простой набор данных)

Все ресурсы, которые я нашел для choroplethr, используют функции, которые теперь устарели. Я часами гонялся за своим хвостом, пытаясь использовать его, и я так расстроен, поэтому любая помощь будет очень признательна.

Ответ 1

Благодарим вас за использование choroplethr, и я сожалею, что отказ zip_map вызвал у вас проблемы. Я переместил все связанные с ZIP функции в отдельный упакованный choroplethrZip.

Старый veron choroplethr визуализировал ZIPs как диаграммы рассеяния, а не choropleths. Для рендеринга в качестве правильных choropleths требуется карта, которая слишком велика для CRAN (~ 60 МБ), поэтому она доступна только через github.

На странице github, с которой я ссылаюсь выше, есть 3 виньетки. В принципе, функция zip_choropleth должна делать именно то, что вы хотите, и работать как все остальные функции choroplethr. Вы хотите использовать state_zoom для увеличения в восточном побережье:

# use the devtools package from CRAN to install choroplethrZip from github
install.packages("devtools")
library(devtools)
install_github('arilamstein/[email protected]')
library(choroplethrZip)

data(df_pop_zip)

# ec = east coast
ec_states = c("maine", "new hampshire", "massachusetts", "rhode island", "connecticut", 
              "new york", "new jersey", "delaware", "maryland", 
              "virginia", "north carolina", "south carolina", "georgia", "florida",
              "pennsylvania", "district of columbia", "vermont", "west virginia")

zip_choropleth(df_pop_zip, 
               state_zoom = ec_states, 
               title      = "2012 ZCTA Population Estimates",
               legend     = "Population") + coord_map()    

enter image description here

Результирующая карта по существу нечитаема, потому что молнии настолько малы, что вы можете видеть только границы. Если вы хотите удалить границы, попробуйте следующее:

choro = choroplethrZip::ZipChoropleth$new(df_pop_zip)
choro$prepare_map()

data(zip.regions)
choro$legend = "Population"
ec_zips = zip.regions[zip.regions$state.name %in% ec_states, "region"]
ec_df   = choro$choropleth.df[choro$choropleth.df$region %in% ec_zips, ]
ec_plot = choro$render_helper(ec_df, "", choro$theme_clean()) + 
              ggtitle("2012 ZCTA Population Estimates")

ec_plot + coord_map() 

enter image description here

В будущем я могу добавить параметр, который упростит отображение карт без границ. Но на данный момент (версия 1.3.0) это самый простой способ, который я могу это сделать, и в основном это то, что я делаю за кулисами, чтобы отображать национальные карты zip, которые сами отображаются без границ.

Обратите внимание, что coord_map просто заставляет проекцию меркатора.