2013-06-21 9 views
9

Ho visto una mappa coropleta interattiva a livello di contea degli Stati Uniti su www.betydb.org. Vorrei riprodurre una mappa simile usando R. Voglio solo la mappa e le descrizioni dei comandi (non tutte le tessere con diversi livelli di zoom, o la possibilità di cambiare mappe)Tracciare i dati a livello di contea con i suggerimenti in R

La mappa è attualmente creata in ruby, e il popup (in basso a sinistra) interroga un database MySQL. Il programmatore che l'ha scritto è andato avanti e non ho familiarità con Ruby.

map

Qui, vorrei iniziare con un file CSV. I dati includono i nomi di stato e di contea e FIPS di stato e provincia. Mi piacerebbe tracciare lo Avg_yield.

mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv") 
> colnames(mydata) 
[1] "OBJECTID" "Join_Count" "TARGET_FID" "COUNTY_NAME" "STATE_NAME" "STATE_FIPS" 
[7] "CNTY_FIPS" "FIPS"  "Avg_lat"  "Avg_lon"  "Avg_yield" 

posso tracciare a livello statale usando l'googleVis pacchetto

library(googleVis) 
p <- gvisGeoChart(data = mydata, locationvar="STATE_NAME", colorvar = 'Avg_yield', 
        options= list(region="US", displayMode="regions", 
        resolution="provinces")) 
plot(p) 

enter image description here

Questo fornisce colorazione stato a livello. La mia domanda qui è, come posso ottenere qualcosa di simile con colori e suggerimenti a livello di contea (piuttosto che a livello di stato) risoluzione?

L'aiuto gvisGeoChart (sotto regione e risoluzione) e la Google chart documentation indicano che questo potrebbe non essere possibile, ma la documentazione è così vasto che non è chiaro quello che le mie altre opzioni sono, all'interno di R.

Quindi, c'è un modo per ottenere una mappa con suggerimenti e colorazione a livello di contea?

+0

Ho lavorato su una mappa simile degli Stati Uniti. Il grafico di Google ha un'opzione che può essere utilizzata in R: 'resolution =" metros "' – Kevin

risposta

3

Questa è una domanda che viene dal 2013. Non sono sicuro se il pacchetto leaflet fosse indietro. È la fine del 2017 ora, ed è possibile raggiungere il tuo compito. Voglio lasciare questo per te, se hai ancora bisogno di svolgere compiti simili. In questo caso, ci sono alcune contee mancanti nel set di dati. Queste contee sono presenti nei dati poligono USA, ma mancano nel numero mydata. Quindi ho aggiunto queste contee allo mydata utilizzando setdiff() e bind_rows(). Quando si disegna una mappa di volantini, è necessario specificare la tavolozza dei colori. Avg_yield è una variabile continua. Quindi usi colorNumeric(). Lascio una schermata che mostra una parte della mappa del volantino.

library(raster) 
library(leaflet) 
library(tidyverse) 

# Get USA polygon data 
USA <- getData("GADM", country = "usa", level = 2) 

### Get data 
mydata <- read.csv("https://www.betydb.org/miscanthus_county_avg_yield.csv", 
        stringsAsFactors = FALSE) %>% 
      dplyr::select(COUNTY_NAME, Avg_yield) 

### Check counties that exist in USA, but not in mydata 
### Create a dummy data frame and bind it with mydata 

mydata <- data.frame(COUNTY_NAME = setdiff(USA$NAME_2, mydata$COUNTY_NAME), 
        Avg_yield = NA, 
        stringsAsFactors = FALSE) %>% 
      bind_rows(mydata) 

### Create a color palette 
mypal <- colorNumeric(palette = "viridis", domain = mydata$Avg_yield) 

leaflet() %>% 
addProviderTiles("OpenStreetMap.Mapnik") %>% 
setView(lat = 39.8283, lng = -98.5795, zoom = 4) %>% 
addPolygons(data = USA, stroke = FALSE, smoothFactor = 0.2, fillOpacity = 0.3, 
      fillColor = ~mypal(mydata$Avg_yield), 
      popup = paste("Region: ", USA$NAME_2, "<br>", 
          "Avg_yield: ", mydata$Avg_yield, "<br>")) %>% 
addLegend(position = "bottomleft", pal = mypal, values = mydata$Avg_yield, 
      title = "Avg_yield", 
      opacity = 1) 

enter image description here

enter image description here

+0

Questa mappa mostra l'intero Nord America. Come lo cambi, mostra solo Stati Uniti tra cui Alaska e Hawaii? – Harish

Problemi correlati