2014-02-15 6 views
12

ich in R Datenanalyse neu bin und möchte etwas einfach tun, ich bin immer noch Schwierigkeiten mit ... Ich habe einen großen Tisch mit latitudes und longitudesWie eine Heatmap auf einer räumlichen Karte plotten

sample = structure(list(Longitude = c(-0.19117, -0.211708, -0.206458, 
-0.173862, -0.156618), Latitude = c(51.489096, 51.520075, 51.525301, 
51.482442, 51.495752), Location_Easting_OSGR = c(525680L, 524170L, 
524520L, 526900L, 528060L), Location_Northing_OSGR = c(178240L, 
181650L, 182240L, 177530L, 179040L)), .Names = c("Longitude", 
"Latitude", "Location_Easting_OSGR", "Location_Northing_OSGR" 
), row.names = c(NA, -5L), class = c("data.table", "data.frame" 
)) 

bekam ich eine Karte von Großbritannien von GADM (Stufe 2 von UK-Karte).

enter image description here

würde Ich mag durch Länge/Breite auf der Karte

  • bauen eine Heatmap definiert

    1. Plotpunkte der Lage sein, die zeigt, wo die Punkte stärker konzentriert sind ...

    Ist es einfach? Wenn nicht, haben Sie einige Zeiger (nur Großbritannien bitte) Prost

  • +0

    Wollen Sie eine Heaat Map oder eine Choropleth Map? Die ersteren zeichnen Bereiche oder Konturen basierend auf der Konzentration der Punkte. Letzterer färbt die vorhandenen Kartenregionen basierend auf der Anzahl der Punkte in einer bestimmten Region. – jlhoward

    +0

    ja jihoward das ist, was ich gesucht habe – statquant

    Antwort

    18

    Haben Sie daran gedacht?

    Ihre sample war zu klein, um eine Heatmap zu demonstrieren, also erstellte ich eine größere Probe mit künstlichen Clustern bei (long, lat) = (-1,52), (-2,54) und (-4,5,56). IMO die Karte wäre ohne die Punkte informativer.

    Außerdem habe ich die Shapefile, nicht die .Rdata heruntergeladen und importiert. Der Grund dafür ist, dass Sie viel wahrscheinlicher sind Shape-Dateien in anderen Projekten zu finden, und es ist leicht, sie in R.

    setwd("< directory with all your files>") 
    library(rgdal)   # for readOGR(...) 
    library(ggplot2) 
    library(RColorBrewer) # for brewer.pal(...) 
    
    sample <- data.frame(Longitude=c(-1+rnorm(50,0,.5),-2+rnorm(50,0,0.5),-4.5+rnorm(50,0,.5)), 
            Latitude =c(52+rnorm(50,0,.5),54+rnorm(50,0,0.5),56+rnorm(50,0,.5))) 
    UKmap <- readOGR(dsn=".",layer="GBR_adm2") 
    map.df <- fortify(UKmap) 
    
    ggplot(sample, aes(x=Longitude, y=Latitude)) + 
        stat_density2d(aes(fill = ..level..), alpha=0.5, geom="polygon")+ 
        geom_point(colour="red")+ 
        geom_path(data=map.df,aes(x=long, y=lat,group=group), colour="grey50")+ 
        scale_fill_gradientn(colours=rev(brewer.pal(7,"Spectral")))+ 
        xlim(-10,+2.5) + 
        coord_fixed() 
    

    Erklärung zu importieren:

    Dieser Ansatz nutzt das ggplot Paket, mit dem Sie Ebenen erstellen und dann die Karte rendern können. Die Anrufe machen folgendes:

    ggplot -   establish `sample` as the default dataset and define (Longitude,Latitude) as (x,y) 
    stat_density2d - heat map layer; polygons with fill color based on relative frequency of points 
    geom_point -  the points 
    geom_path -  the map (boundaries of the admin regions) 
    scale_fill_gradientn - defines which colors to use for the fill 
    xlim -   x-axis limits 
    coord_fixed - force aspect ratio = 1, so map is not distorted 
    
    +0

    sehr schön !!! danke tou sehr viel – statquant

    +0

    sehr schön Ich habe eine Frage. Wenn jedem Punkt ein anderes Attribut zugeordnet ist (wir nehmen Grundhebung an), wie können Sie das gleiche Ding replizieren (dh ggplot mit gefüllter Kontur der Geländeerhebung über der räumlichen Position)? Danke und ich hoffe meine Frage war klar genug – Amir