2013-05-19 7 views
5

Sto creando una mappa contea coropleta con bordi grigi e voglio anche includere i confini dello stato in nero. Qualcuno sa come faccio ad aggiungere un secondo livello di mappatura dello stato a una mappa di contea esistente?ggplot2 che delimita i confini della contea in un colore e limiti di stato in un'altra sulla stessa mappa

Ecco il data set e il codice ho finito per usare:

#load libraries 
    library(ggplot2) 
    library(ggmap) 
    library(maps) 
    library(plyr) 

#get wif file 
wip <- read.csv("wip.csv") 

#get map data for US counties and states 
county_map <- map_data("county") 
state_map <- map_data("state") 

#merge wip and county_map 
wip_map <- merge(county_map, wip, by.x=c("region", "subregion"), 
    by.y=c("region","subregion"), all.x=TRUE) 

#resort merged data 
wip_map <- arrange(wip_map, group, order) 

#relpace NA with 0's 
wip_map[is.na(wip_map)] <- 0 

#generate a disctrete color pallette  
pal <- c("#F7FCF5","#74C476","#41AB5D","#238B45","#006D2C","#00441B") 


theme_clean <- function(base_size = 12) { 
    require(grid) 
    theme_grey(base_size) %+replace% 
    theme(
     axis.title  = element_blank(), 
     axis.text  = element_blank(), 
     panel.background = element_blank(), 
     panel.grid  = element_blank(), 
     axis.ticks.length = unit(0,"cm"), 
     axis.ticks.margin = unit(0,"cm"), 
     panel.margin = unit(0,"lines"), 
     plot.margin  = unit(c(0,0,0,0),"lines"), 
     complete = TRUE 
     ) 
    } 

final_map <- ggplot(wip_map, aes(x=long, y=lat, group=group, fill=factor(CATEGORY))) + 
      geom_polygon(colour="grey", aes(fill=factor(CATEGORY))) + 
      scale_fill_manual(values=pal) + 
      expand_limits(x = wip_map$long, y = wip_map$lat) + 
      coord_map("polyconic") + 
      labs(fill="Number Per\nCounty") + 
       theme_clean() 

final_map + geom_path(data = state_map , colour = "red") 

Grazie!

+0

Il file che si collega per il set di dati è nel Cestino di Google Drive. Scomparirà presto. È possibile aggiornare il contenuto su un collegamento più permanente ospitato su qualcosa come pastebin? – csalvato

risposta

12

Basta aggiungere un geom_path al codice ...

ho usato rosso per evidenziare i confini, ma si può facilmente basta impostarlo su nero.

ggplot(wip_map, aes(x = long , y = lat , group=group)) + 
     geom_polygon(colour = "grey" , aes(fill = factor(CATEGORY))) + 
     scale_fill_manual(values = pal) + 
     expand_limits(x = wip_map$long, y = wip_map$lat) + 
     coord_map("polyconic") + 
     labs(fill="Number Per\nCounty") + 
     theme_clean() + 
     geom_path(data = state_map , colour = "red") 

enter image description here

+0

Grazie mille, lo apprezzo davvero. La soluzione che hai fornito non sembra funzionare con il codice che ho finito per scrivere. Quando lo aggiungo al codice riportato di seguito viene visualizzato l'errore "Errore nel fattore (CATEGORY): oggetto" CATEGORY "non trovato": 'ggplot (wip_map, aes (x = long, y = lat, group = group, fill = factor (CATEGORIA))) + \t geom_polygon (color = "grigio",) + \t scale_fill_manual (valori = PAL) + \t expand_limits (x = county_map $ lungo, y = county_map $ lat) + \t coord_map ("policonico ") + \t lab (fill =" Reps per \ nCounty "' – huxley

+0

Sì, 'CATEGORY' è un nome di colonna in wip_map, indica quale bucket la contea specifica cade. Ho rimosso la virgola extra in' geom_polygon (color = "grigio",) 'e ha ricevuto lo stesso errore, grazie ancora – huxley

+0

Ho aggiunto il set di dati e il codice al post originale, grazie – huxley

Problemi correlati