Bessie Lee
Bessie Lee

Reputation: 51

Choropleth Map of State Population

Trying to create a choropleth map showing state population also labeling capital cities. I had two data frame initially but was not able not add ggplot 1 to ggplot 2, so I combined two data frames together, part of the table looks like this:enter image description here

basically trying to combines these two images together: enter image description here

and enter image description here

I've written

ggplot(spr, aes(long, lat)) + borders("state") + geom_point() + 
coord_quickmap() +geom_label_repel(aes(label = city), size = 2) + 
geom_polygon(aes(long, lat, group = capital, fill = pcls),color = "grey") +
coord_map("bonne", parameters=45) +ggthemes::theme_map() + 
scale_fill_brewer(palette = "Reds")

but map looks off: enter image description here

i think it's the polygon part is throwing me off but not sure what to do about it.

Upvotes: 1

Views: 488

Answers (1)

Anonymous coward
Anonymous coward

Reputation: 2091

You'll need shapefiles, or at least have the borders known to map the data to.

In keeping with your question from the other day, you can still use state. scale_fill_brewer is designed for use with discrete variables. Use scale_fill_gradientn, specifying brewer.pal. Add the capitals layer in there as desired.

library(ggplot2)
library(usmap)
library(maps)
library(ggrepel)
library(ggthemes)

us <- map_data("state") # get the data to plot and map data to
data(statepop)
pops <- statepop
pops$full <- tolower(pops$full)

ggplot() + geom_map(data = us, map = us, aes(long, lat, map_id = region), fill = "#ffffff", color = "#ffffff", size = 0.15) +
  geom_map(data = pops, map = us, aes(fill = pop_2015, map_id = full), size = 0.15) +
  coord_map("bonne", parameters=45) +
  scale_fill_gradientn(colors = brewer.pal(9, "Reds")) + #adjust the number as necessary
  borders("state") +
  ggthemes::theme_map()

Upvotes: 3

Related Questions