r
  • r-raster
  • sp
  • 2016-06-01 11 views 6 likes 
    6

    ho disegnare una mappa delle regioni della Russia utilizzando i dati GADM:"Globe" mappa a forma di Russia

    setwd("~/Desktop/Master thesis/") 
    library(sp) 
    library(RColorBrewer) 
    library(raster) 
    
    data <- getData('GADM', country='RUS', level=1) 
    #exclude columns I don't need 
    data <- data[,-c(2,3,4,5,7,8,9,10,11,12,13)] 
    data$region <- as.factor(iconv(as.character(data$NAME_1))) 
    png(file = "~/Desktop/myplot2.png", width = 1300, height = 700, units = "px") 
    spplot(data, "region", xlim=c(15,190), ylim=c(40,83), col.regions = colorRampPalette(brewer.pal(12, "Set3"))(85), col = "white") 
        dev.off() 
    

    Mappa ho ottenuto: enter image description here

    Mappa ho ottenuto è troppo "piatto" e non sembra mappa fe da Wikipedia. Le parti destra e sinistra della mappa dovrebbero essere leggermente rivolte (poiché sono dovute alla forma rotonda del globo).

    Map da Wiki: enter image description here

    C'è un modo per renderlo più "globe-forma"?

    +0

    è necessario scegliere la proiezione giusta. Vorrei importare la mappa in QGIS, vedere quale proiezione si adatta meglio e applicarla nel codice R. –

    risposta

    3

    Se non ti dispiace usare ggplot2 potresti usare coord_map("azequalarea").

    creare una cornice di dati:

    library(ggplot2) 
    library(maptools) 
    data.f <- fortify(data, region = "region") 
    

    Poi trama:

    ggplot(data.f) + 
        geom_polygon(aes(x = long, y = lat, fill = id, group = group), colour = "white") + 
        xlim(15,190) + 
        ylim(40,83) + 
        coord_map("azequalarea") + 
        scale_fill_manual(values = colorRampPalette(brewer.pal(12, "Set3"))(85)) + 
        theme(axis.line = element_blank(), 
         axis.text.x = element_blank(), 
         axis.text.y = element_blank(), 
         axis.ticks = element_blank(), 
         axis.title.x = element_blank(), 
         axis.title.y = element_blank(), 
         panel.background = element_blank(), 
         panel.border = element_blank(), 
         panel.grid.major = element_blank(), 
         panel.grid.minor = element_blank(), 
         plot.background = element_blank()) 
    

    enter image description here

    +0

    Lo scopo principale di disegnare una mappa era unire i geodati con il pannello di indicatori socio-economici e quindi colorare le regioni in base ai livelli di povertà " – MariaBee

    +0

    @MariaBee quindi dove esattamente il problema? Probabilmente potresti unire i dati con altri dati frame (per regione) e specificare il riempimento in base alla variabile povertà – beetroot

    +0

    Ho intuito il tuo codice.Tuttavia nel mio caso ci sono voluti circa 15 minuti per tracciare una trama dal tuo codice, anche quando è stata salvata direttamente in file png (come nel mio esempio). Senza salvare in png non è mai apparso e si è appena schiantato – MariaBee

    Problemi correlati