Я пытаюсь составить краткую карту данных на уровне округов по инфекциям COVID-19 с использованием R. Я относительный новичок ie к R, так что ...
Я сделал некоторые довольно простые c вещи с ggmap для построения пространственных данных, но никогда ничего подобного. Обычно у меня просто есть интересные объекты, которые мне нужно наложить на карту, чтобы я мог использовать geom_point и их широту / долготу. В этом случае мне нужно построить базовую карту, а затем заполнить регионы, и я изо всех сил пытаюсь сделать это в мире ggplot.
Я следил за некоторыми примерами онлайн, которые я нашел, чтобы добраться до этого :
library(ggplot2)
library(broom)
library(geojsonio)
#get a county level map geoJSON file
counties <- geojson_read("https://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_050_00_500k.json", what = "sp")
#filter our alaska and Hawaii
lower48 <- counties[(counties@data$STATE != "02" & counties@data$STATE != "15") ,]
#turn it into a dataframe for ggmap
new_counties <- tidy(lower48)
# Plot it
print(ggplot() +
geom_polygon(data = new_counties, aes( x = long, y = lat, group = group), fill="#69b3a2", color="white") +
theme_void() +
coord_map())
Который производит этот участок:
Пока все хорошо. Но мой информационный фрейм new_counties теперь выглядит следующим образом:
head(new_counties)
# A tibble: 6 x 7
long lat order hole piece group id
<dbl> <dbl> <int> <lgl> <chr> <chr> <chr>
1 -85.4 33.9 1 FALSE 1 0.1 0
2 -85.4 33.9 2 FALSE 1 0.1 0
3 -85.4 33.9 3 FALSE 1 0.1 0
4 -85.4 33.9 4 FALSE 1 0.1 0
5 -85.4 33.9 5 FALSE 1 0.1 0
6 -85.4 33.8 6 FALSE 1 0.1 0
Так что я потерял все, что смогу получить ie к своим данным об инфекциях на уровне округа.
Мой данные имеют 5-ди git код FIPS для каждого округа. Первые две цифры - штат, а последние три - округ. Мой файл geo JSON содержит гораздо более подробный код FIPS. Я попытался получить только первые 5 и создать свой собственный элемент данных, который я мог отобразить обратно на
library(ggplot2)
library(broom)
library(geojsonio)
#get a county level map geoJSON file
counties <- geojson_read("https://eric.clst.org/assets/wiki/uploads/Stuff/gz_2010_us_050_00_500k.json", what = "sp")
#filter our alaska and Hawaii
lower48 <- counties[(counties@data$STATE != "02" & counties@data$STATE != "15") ,]
#add my own FIPS code
lower48@data$myFIPS <- substr(as.character(lower48@data$GEO_ID),1,5)
#turn it into a dataframe for ggmap
new_counties <- tidy(lower48, region = "myFIPS")
# Plot it
print(ggplot() +
geom_polygon(data = new_counties, aes( x = long, y = lat, group = group), fill="#69b3a2", color="white") +
theme_void() +
coord_map())
Но это приводит к этому графику
И я должен сказать, что я недостаточно знаком с метлой :: приборкой, чтобы точно знать, почему. По мере ввода текста я также замечаю, что мне нужно отфильтровать Пуэрто-Рико!
Если кто-нибудь может указать мне полезное направление ... Я не привержен нынешнему подходу, хотя хотел бы придерживаться ggplot2 или ggmap. Мой босс в конечном итоге хочет, чтобы я наложил определенные функции. В конечном итоге цель состоит в том, чтобы последовать примеру здесь и создать анимированную карту, показывающую данные с течением времени, но я, очевидно, далек от этого.