How do I plot US cities using ggplot?
Asked Answered
R

2

11

I can plot the state of Louisiana just fine...

require(ggplot2)
require(ggmap)
require(maps)
LA <- map_data("state", region="louisiana")
ggplot(LA, aes(x=long, y=lat))+geom_polygon()

enter image description here

Now, I have data on how many sales calls were made to particular cities in LA. How would I add a point for each city where a sales call was made to the plot?

salesCalls <- data.frame(State=rep("louisiana",5), 
                             City=c("Baton Rouge", "New Orleans", "Shreveport", "Lafayette", "Mandeville"),
                             Calls=c(10,5,8,13,2))
salesCalls
      State        City Calls
1 louisiana Baton Rouge    10
2 louisiana New Orleans     5
3 louisiana  Shreveport     8
4 louisiana   Lafayette    13
5 louisiana  Mandeville     2
Render answered 13/3, 2015 at 16:55 Comment(1)
You probably want to use + coord_map() as well to get the aspect ratio nice.Surrender
C
15
require(ggplot2)
require(ggmap)
require(maps)
LA <- map_data("state", region="louisiana")

salesCalls <- data.frame(State=rep("louisiana",5), 
                         City=c("Baton Rouge", "New Orleans", "Shreveport", 
                                "Lafayette", "Mandeville"),
                         Calls=c(10,5,8,13,2))

salesCalls <- cbind(geocode(as.character(salesCalls$City)), salesCalls)

salesCalls
#         lon      lat     State        City Calls
# 1 -91.14032 30.45828 louisiana Baton Rouge    10
# 2 -90.07153 29.95107 louisiana New Orleans     5
# 3 -93.75018 32.52515 louisiana  Shreveport     8
# 4 -92.01984 30.22409 louisiana   Lafayette    13
# 5 -90.06563 30.35825 louisiana  Mandeville     2

ggplot(LA, aes(x=long, y=lat)) +
  geom_polygon() +
  coord_map() +
  geom_point(data=salesCalls, aes(x=lon, y=lat, size=Calls), color="orange")

ggplot2

On a Google Map:

ggmap(get_map(location = 'Louisiana', zoom = 7)) +
  geom_point(data=salesCalls, aes(x=lon, y=lat, size=Calls), color="orange")

Google Map

Chinoiserie answered 13/3, 2015 at 17:29 Comment(9)
Thanks a ton. I'm really interested in getting that google map to work now, but when I execute your code all I get is the grey ggplot background with orange points (where they're supposed to be). In other words, there's no map. Any idea why?Render
@Render Try running get_map(location = 'Louisiana', zoom = 7) and see what comes back. Are you behind a proxy server? I also noticed a typo in my code, doubtful that would be it, but double-check the spelling of "Louisiana"Chinoiserie
Never mind - I think this issue goes a little deeper than I initially expected.Render
@Render This Article is a great guide to getting started with library(ggmap)Chinoiserie
When I run get_map(location = 'Louisiana', zoom = 7) I get the message "Map from URL : maps.googleapis.com/maps/api/… Information from URL : maps.googleapis.com/maps/api/geocode/…" along with a big matrix of valuesRender
@Render What about when running ggmap(get_map(location = 'Louisiana', zoom = 7))Chinoiserie
No luck. Still just a blank grey screen.Render
I fixed the example above with hardcoded lon-lat coordinates for the dataset and for the get_map thingy. If it does not get accepted here is this comment :)Cattleya
I get "1: geocode failed with status OVER_QUERY_LIMIT, location = "Baton Rouge" , solution is to use option source= "dsk" for geocode.Finn
M
0

The following script should work for the google maps part:

ggmap(get_map(location = 'Louisiana', zoom = 7)) +
  geom_point(
    data = salesCalls, 
    aes(x = salesCalls$lon, y = salesCalls$lat, size = salesCalls$Calls), 
    color = "orange"
  )
Morose answered 13/2, 2018 at 11:14 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.