У меня есть некоторые демографические данные, которые я хотел бы использовать, чтобы сделать choropleth карту графств США. Мой рабочий процесс не попадает в какие-либо ошибки, и я могу создать окончательную карту, однако, данные, что ее отображение неверно. В моем рабочем процессе используются два источника данных - файл формы и data.frame. Шейпфайлом является графства шейпфайла, которые можно найти по этой ссылке https://www.dropbox.com/s/4ujxidyx42793j7/cb_2015_us_county_500k.zip?dl=1 data.frame файла можно найти по этой ссылке: https://www.dropbox.com/s/qys6s6ikrs1g2xb/data.dem.csv?dl=1Невозможно построить карту choropleth в r
Вот мой код:
#Load dependencies
library(sp)
library(spatialEco)
library(rgdal)
library(dplyr)
library(maptools)
library(taRifx.geo)
library(ggplot2)
library(USAboundaries)
library(splitstackshape)
library(maps)
library(cowplot)
#Read in shape and csv files
county.track<-readOGR("/path", "filename")
[email protected]$id = rownames([email protected])
data<-read.csv("/path/filename.csv")
#Convert data.frame (data) to points polygon file
data$y<-data$lat
data$x<-data$long
coordinates(data) <- ~ x + y
proj4string(data) <- CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
proj4string(county.track) <- CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
#Overlay points onto polygons
county.track.data<-point.in.poly(data, county.track)
#Summarize point data by county
count<-select(as.data.frame(county.track.data), id, count)
count<-count %>%
group_by(id) %>%
summarize(count=sum(count))
#Merge with shape file data
[email protected]<-merge([email protected], count, by="id", all.x=T)
#Replace NA values with zeroes
[email protected]$count[is.na([email protected]$count)]<-0
county.track.points = fortify(county.track, region="id")
map.plot<-merge(county.track.points, [email protected], by="id")
#Get rid of Hawaii and Alaska
map.plot<-map.plot %>%
filter(lat<50 & lat>25) %>%
filter(long>-130)
#Create choropleth map using ggplot2
ggplot(map.plot) +
geom_polygon(aes(long, lat, group=group, fill=log(count))) +
coord_map()
выход выглядит следующим образом :
Но это просто неправильно, что очевидно по ряду причин. Один, наиболее очевидно, что большая часть данных не отображается. Серые области на карте обозначают NA. Но я удалил NA в одном из шагов выше, также при анализе данных, используемых для сопоставления (map.plot), в переменной заполнения (счет) нет NA. Во-вторых, распределение значений для того, что отображается, отключено. Граф Лос-Анджелеса должен иметь наивысшее значение счета в 793 (значение журнала 6,675823), но на карте многочисленные светлые графства указывают, что значение других пространственных единиц выше, а некоторые из ранжированных графств, таких как Сан-Диего, не заполняются вообще (внизу слева от карты).
Когда я просматриваю данные, которые я использовал для сопоставления (map.plot), все кажется ОК. Область Лос-Анджелеса по-прежнему является наивысшей оценкой графства для переменной «count», но карта предполагает иное (см. Здесь изображение). Я надеюсь, что кто-то может сделать некоторые судебные экспертизы здесь и определить проблему, я сделал все возможное, чтобы пройти все мои шаги, но я не могу показать, что это проблема. Заранее спасибо.
UPDATE: Я попытался использовать другой файл формы из того же источника. Файл формы в приведенной выше ссылке аналогичен файлу с надписью «cb_2015_us_county_500k.zip» следующим образом (https://www.census.gov/geo/maps-data/data/cbf/cbf_counties.html). Когда я выбираю другой шейп (например, cb_2015_us_county_5m.zip) Я получаю другую карту, но одни и те же проблемы: Смотрите следующую карту пример:
я не уверен, что происходит! На этой новой карте графство Лос-Анджелеса больше не окрашено, а Orange County! Буду признателен за любую оказанную помощь.
Спасибо за ответ, у меня возникают проблемы тиражирования код '' counties_composite()%>% подмножества (состояние % in% unique (df $ state)) -> usa'' Я получаю следующую ошибку: Ошибка в матче (x, table, nomatch = 0L): object 'state' not found –
, когда я запускаю это вместо '' counties_composite()%>% subset (df $ state% in% unique (df $ state)) -> usa'' , то эта строка дает мне ошибку: координаты (pts) <- ~ long + lat Ошибка в (function (classes, fdef, mtable): не удается найти унаследованный метод для функций 'координат <-' для подписи '" tbl_df "' –
Получил это' 'pts <-as.data.frame (его)' ' –