Похоже, что ваша data.frame
«карта» не имеет столбца с именем «состояния», и поэтому команда соединения не выполняется. Я не могу проверить это, поскольку у меня нет точных наборов данных, которые вы используете, но это может просто сработать, чтобы изменить вашу команду следующим образом:
newdata <- left_join(mapstates, delaymap, by= c("mapstates" = "state"))
Я выполнил следующий код, чтобы воспроизвести ваша идея в моей среде, и она работает. Я использую «statepop» data.frame
из пакета usmap
, чтобы присоединить ваши данные, так как он имеет код fips
, необходимый для пакета, для определения состояний (или округов). Также см. Документацию по аргументу data
?plot_usmap()
.
library(dplyr)
library(usmap)
library(ggplot2)
map_df <- tibble::tribble(
~"mapstates",~"mapdelay",
"Alabama" , 457,
"Alaska" , 374,
"Arizona" , 2852,
"Arkansas" , 339,
"California" , 11609,
"Colorado" , 3298
)
new_df <- left_join(statepop, map_df, by = c("full" = "mapstates"))
plot_usmap(data = new_df, values = "mapdelay", color = "white") +
scale_fill_continuous(
low = "white", high = "red", name = "Delay", label = scales::comma
) + theme(legend.position = "right")
Примечание. Некоторые состояния не окрашены, поскольку у меня нет ваших полных набор данных.