Thomas MacFarland
2019-May-30 18:42 UTC
[R] Choropleth map over an outline of Florida's 67 counties
Everyone: I am trying to build a choropleth map that uses colored shading to identify the number of incidents for a specific event during Calendar Year 2018 throughout Florida, ideally on a county-by-county basis. I'd also like to include the county borders in the map, to emphasize urban v rural. However, if the county borders cannot be displayed along with the choropleth colored shading that would be acceptable. Everything is fine up to the choropleth map part of this activity and that is where I'm stuck. Any idea, pointers, recommended references, etc. would be helpful. Somehow, I need to have the dataset with number of incidents interface with the mapping part of this activity and I've run out of online resources for review - but still no success. Thanks and I'm very grateful for any assistance. Best wishes. Tom ############################################################# # < CY2018Incidents67FloridaCounties > # # There are two main goals for this activity: # # Produce a map of Florida that outlines all 67 counties, # which will serve as a base map of Florida. # # Place over the base map of Florida a choropleth map that # uses colored shading to give a sense of the number of # incidents, by county, during Calendar Year 2018. # # Ideally, the county outlines will show along with the # colored shading. # # As expected, the highly-populated urban counties will have # more incidents than the sparsely-populated rural counties. # Start out with a clean slate. ls() rm(list=ls(all=TRUE)) ls() # Install the required packages. install.packages(c("ggplot2", "ggthemes", "ggmap", "maps", "mapdata")) library(ggplot2); library(ggthemes); library(ggmap) library(maps); library(mapdata); library() # Build a dataframe of U.S. states and a dataframe of # Florida. States.df <- map_data("state") str(States.df) head(States.df) Florida.df <- subset(States.df, region == "florida") str(Florida.df) head(Florida.df) # Build a dataframe of U.S. counties and a dataframe of # Florida counties. Counties.df <- map_data("county") str(Counties.df) head(Counties.df) FloridaCounties.df <- subset(Counties.df, region == "florida") str(FloridaCounties.df) head(FloridaCounties.df) # Produce a map that outlines all 67 counties in Florida. Florida_map1 <- ggplot2::ggplot(data = FloridaCounties.df, mapping = aes(x = long, y = lat, group = group)) + coord_fixed(1.3) + geom_polygon(color = "red", fill = "aliceblue") par(ask=TRUE); Florida_map1 # Map of Florida with all 67 counties in a red outline # Build a dataframe that details the number of Calendar Year # 2018 incidents for each county. CY2018Incidents.df <- read.table(textConnection(" FIPSCode Incidents # County 12001 89 # Alachua 12003 1 # Baker 12005 21 # Bay 12007 4 # Bradford 12009 165 # Brevard 12011 8218 # Broward 12013 1 # Calhoun 12015 35 # Charlotte 12017 16 # Citrus 12019 42 # Clay 12021 115 # Collier 12023 10 # Columbia 12027 7 # De Soto 12029 0 # Dixie 12031 368 # Duval 12033 21 # Escambia 12035 29 # Flagler 12037 2 # Franklin 12039 9 # Gadsden 12041 0 # Gilchrist 12043 2 # Glades 12045 0 # Gulf 12047 0 # Hamilton 12049 3 # Hardee 12051 15 # Hendry 12053 24 # Hernando 12055 16 # Highlands 12057 613 # Hillsborough 12059 0 # Holmes 12061 48 # Indian River 12063 2 # Jackson 12065 0 # Jefferson 12067 0 # Lafayette 12069 80 # Lake 12071 391 # Lee 12073 62 # Leon 12075 3 # Levy 12077 0 # Liberty 12079 2 # Madison 12081 72 # Manatee 12083 63 # Marion 12085 70 # Martin 12086 4075 # Miami-Dade 12087 18 # Monroe 12089 12 # Nassau 12091 25 # Okaloosa 12093 5 # Okeechobee 12095 547 # Orange 12097 93 # Osceola 12099 1602 # Palm Beach 12101 115 # Pasco 12103 232 # Pinellas 12105 154 # Polk 12107 10 # Putnam 12113 14 # Santa Rosa 12115 61 # Sarasota 12117 183 # Seminole 12109 60 # St. Johns 12111 170 # St. Lucie 12119 1 # Sumter 12121 2 # Suwannee 12123 1 # Taylor 12125 0 # Union 12127 137 # Volusia 12129 1 # Wakulla 12131 5 # Walton 12133 2"), header=TRUE) # Washington attach(CY2018Incidents.df) str(CY2018Incidents.df) head(CY2018Incidents.df) # And here is where I am stuck! How do I produce what would # otherwise be Florida_map2, where the choropleth map of # incidents is placed over the map that outlines Florida's 67 # counties. # May 30, 2019 02:25 PM ############################################################# ---------- Thomas W. MacFarland, Ed.D. Senior Research Associate; Institutional Effectiveness and Associate Professor Nova Southeastern University Voice 954-262-5395 tommac at nova.edu<mailto:tommac at nova.edu> [[alternative HTML version deleted]]
Jeff Newmiller
2019-May-31 03:10 UTC
[R] Choropleth map over an outline of Florida's 67 counties
Since Googling "chloropleth ggplot" yields many possibilities (e.g.[1]), I can't say I am very motivated to read them and guess what deficiencies you found that made them miss your target. Also note that had you read the Posting Guide you would know that there is a mailing list dedicated to spatial analysis with R... r-sig-geo. [1] https://unconj.ca/blog/choropleth-maps-with-r-and-ggplot2.html On May 30, 2019 11:42:59 AM PDT, Thomas MacFarland <tommac at nova.edu> wrote:>Everyone: > >I am trying to build a choropleth map that uses colored shading to >identify the number of incidents for a specific event during Calendar >Year 2018 throughout Florida, ideally on a county-by-county basis. > >I'd also like to include the county borders in the map, to emphasize >urban v rural. However, if the county borders cannot be displayed >along with the choropleth colored shading that would be acceptable. > >Everything is fine up to the choropleth map part of this activity and >that is where I'm stuck. Any idea, pointers, recommended references, >etc. would be helpful. Somehow, I need to have the dataset with number >of incidents interface with the mapping part of this activity and I've >run out of online resources for review - but still no success. > >Thanks and I'm very grateful for any assistance. > >Best wishes. > >Tom > >############################################################# ># < CY2018Incidents67FloridaCounties > ># ># There are two main goals for this activity: ># ># Produce a map of Florida that outlines all 67 counties, ># which will serve as a base map of Florida. ># ># Place over the base map of Florida a choropleth map that ># uses colored shading to give a sense of the number of ># incidents, by county, during Calendar Year 2018. ># ># Ideally, the county outlines will show along with the ># colored shading. ># ># As expected, the highly-populated urban counties will have ># more incidents than the sparsely-populated rural counties. > ># Start out with a clean slate. > >ls() >rm(list=ls(all=TRUE)) >ls() > ># Install the required packages. > >install.packages(c("ggplot2", "ggthemes", "ggmap", "maps", > "mapdata")) > >library(ggplot2); library(ggthemes); library(ggmap) >library(maps); library(mapdata); library() > > ># Build a dataframe of U.S. states and a dataframe of ># Florida. > >States.df <- map_data("state") >str(States.df) >head(States.df) >Florida.df <- subset(States.df, region == "florida") >str(Florida.df) >head(Florida.df) > ># Build a dataframe of U.S. counties and a dataframe of ># Florida counties. > >Counties.df <- map_data("county") >str(Counties.df) >head(Counties.df) >FloridaCounties.df <- subset(Counties.df, region == "florida") >str(FloridaCounties.df) >head(FloridaCounties.df) > ># Produce a map that outlines all 67 counties in Florida. > >Florida_map1 <- ggplot2::ggplot(data = FloridaCounties.df, > mapping = aes(x = long, y = lat, group = group)) + > coord_fixed(1.3) + > geom_polygon(color = "red", fill = "aliceblue") > >par(ask=TRUE); Florida_map1 > # Map of Florida with all 67 counties in a red outline > ># Build a dataframe that details the number of Calendar Year ># 2018 incidents for each county. > >CY2018Incidents.df <- read.table(textConnection(" >FIPSCode Incidents # County >12001 89 # Alachua >12003 1 # Baker >12005 21 # Bay >12007 4 # Bradford >12009 165 # Brevard >12011 8218 # Broward >12013 1 # Calhoun >12015 35 # Charlotte >12017 16 # Citrus >12019 42 # Clay >12021 115 # Collier >12023 10 # Columbia >12027 7 # De Soto >12029 0 # Dixie >12031 368 # Duval >12033 21 # Escambia >12035 29 # Flagler >12037 2 # Franklin >12039 9 # Gadsden >12041 0 # Gilchrist >12043 2 # Glades >12045 0 # Gulf >12047 0 # Hamilton >12049 3 # Hardee >12051 15 # Hendry >12053 24 # Hernando >12055 16 # Highlands >12057 613 # Hillsborough >12059 0 # Holmes >12061 48 # Indian River >12063 2 # Jackson >12065 0 # Jefferson >12067 0 # Lafayette >12069 80 # Lake >12071 391 # Lee >12073 62 # Leon >12075 3 # Levy >12077 0 # Liberty >12079 2 # Madison >12081 72 # Manatee >12083 63 # Marion >12085 70 # Martin >12086 4075 # Miami-Dade >12087 18 # Monroe >12089 12 # Nassau >12091 25 # Okaloosa >12093 5 # Okeechobee >12095 547 # Orange >12097 93 # Osceola >12099 1602 # Palm Beach >12101 115 # Pasco >12103 232 # Pinellas >12105 154 # Polk >12107 10 # Putnam >12113 14 # Santa Rosa >12115 61 # Sarasota >12117 183 # Seminole >12109 60 # St. Johns >12111 170 # St. Lucie >12119 1 # Sumter >12121 2 # Suwannee >12123 1 # Taylor >12125 0 # Union >12127 137 # Volusia >12129 1 # Wakulla >12131 5 # Walton >12133 2"), header=TRUE) # Washington > >attach(CY2018Incidents.df) >str(CY2018Incidents.df) >head(CY2018Incidents.df) > ># And here is where I am stuck! How do I produce what would ># otherwise be Florida_map2, where the choropleth map of ># incidents is placed over the map that outlines Florida's 67 ># counties. > ># May 30, 2019 02:25 PM > >############################################################# > >---------- >Thomas W. MacFarland, Ed.D. >Senior Research Associate; Institutional Effectiveness and Associate >Professor >Nova Southeastern University >Voice 954-262-5395 tommac at nova.edu<mailto:tommac at nova.edu> > > > [[alternative HTML version deleted]] > >______________________________________________ >R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >https://stat.ethz.ch/mailman/listinfo/r-help >PLEASE do read the posting guide >http://www.R-project.org/posting-guide.html >and provide commented, minimal, self-contained, reproducible code.-- Sent from my phone. Please excuse my brevity.