ggplot / mapping municípios dos EUA - problemas com formas de visualização em R

Então, eu tenho um quadro de dados em R chamado obesity_map, que basicamente fornece o estado, o município e a taxa de obesidade por município. Parece mais ou menos assim:

obesity_map = data.frame(state, county, obesity_rate)

Estou tentando visualizar isso no mapa, mostrando várias taxas de obesidade por município nos EUA com isso:

us.state.map <- map_data('state')
head(us.state.map)
states <- levels(as.factor(us.state.map$region))
df <- data.frame(region = states, value = runif(length(states), min=0, max=100),stringsAsFactors = FALSE)

map.data <- merge(us.state.map, df, by='region', all=T)
map.data <- map.data[order(map.data$order),]
head(map.data)

map.county <- map_data('county')
county.obesity <- data.frame(region = obesity_map$state, subregion = obesity_map$county, value = obesity_map$obesity_rate)
map.county <- merge(county.obesity, map.county, all=TRUE)
ggplot(map.county, aes(x = long, y = lat, group=group, fill=as.factor(value))) + geom_polygon(colour = "white", size = 0.1)

E basicamente cria uma imagem parecida com esta:

Como você pode ver, os EUA estão divididos em formas estranhas, as cores não são uma cor consistente em gradientes variados e você não pode tirar muito proveito disso. Mas o que eu realmente quero é algo assim abaixo, mas com cada município preenchido:

Eu sou bastante novo nisso, então eu apreciaria toda e qualquer ajuda!

Editar:

Aqui está a saída do dput:

dput(obesity_map)

estrutura (lista (X = 1: 3141, FIPS = c (1L, 3L, 5L, 7L, 9L, 11L, 13L, 15L, 17L, 19L, 21L, 21L, 23L, 25L, 27L, 29L, 31L, 33L, 35L, 37L, 39L, 41L, 43L, 45L, 47L, 49L, 51L, 53L, 55L, 57L, 59L, 61L, 63L, 65L, 67L, 69L, 71L, 71L, 73L, 75L, 77L, 79L, 81L, 83L, 85L, 87L, 89L, 91L, 93L, 95L, 97L, 99L, 101L, 103L, 105L, 107L, 109L, 111L, 113L, 115L, 117L, 119L, 121L, 121L, 123L, 125L, 127L, 129L, 131L, 133L, 13L, 16L, 20L, 50L, 60L, 68L, 70L, 90L, 100L, 110L, 122L, 130L, 150L, 164L, 170L, 180L, 185L, 188L, 201L, 201L, 220L, 232L, 240L, 261L, 270L, 280L, 282L, 290L, 1L, 3L, 5L, 7L, 9L, 11L, 12L, 13L, 15L, 17L, 19L, 21L, 23L, 23L, 25L, 27L, 1L, 3L, 5L, 7L, 9L, 11L, 13L, 15L, 17L, 19L, 21L, 23L, 25L, 27L, 29L, 31L, 33L, 35L, 37L, 39L, 41L,

É uma quantidade enorme de números, porque é para cada município dos EUA, então abreviei os resultados e coloquei as primeiras linhas.

Basicamente, o quadro de dados fica assim:

print(head(obesity_map))


  X FIPS state_names county_names obesity
1 1    1     Alabama      Autauga    24.5
2 2    3     Alabama      Baldwin    23.6
3 3    5     Alabama      Barbour    25.6
4 4    7     Alabama         Bibb     0.0
5 5    9     Alabama       Blount    24.2
6 6   11     Alabama      Bullock     0.0

Também tentei usar o ggcounty seguindo o exemplo apresentado, mas continuo recebendo um erro. Não tenho certeza do que fiz de errado:

library(ggcounty)

# breaks
obesity_map$obese <- cut(obesity_map$obesity, 
                  breaks=c(0, 5, 10, 15, 20, 25, 30), 
                  labels=c("1", "2", "3", "4", 
                           "5", "6"),
                  include.lowest=TRUE)

# get the US counties map (lower 48)
us <- ggcounty.us()

# start the plot with our base map
gg <- us$g

# add a new geom with our population (choropleth)
gg <- gg + geom_map(data=obesity_map, map=us$map,
                aes(map_id=FIPS, fill=obesity_map$obese), 
                color="white", size=0.125)

Mas sempre acabo recebendo um erro dizendo: "Erro: o argumento deve ser coercível a um número inteiro não negativo"

Qualquer ideia? Obrigado novamente por toda a sua ajuda! Eu aprecio muito isso.

questionAnswers(6)

yourAnswerToTheQuestion