2016-01-02 15 views
14

Ich versuche die ökologische Verteilung einiger Arten von Organismen, die ich über den Arabischen/Persischen Golf studiere, zu erfassen. Hier ist ein Beispiel eines Codes Ich habe versucht:ggplot_stat_density2d Grundstücke für die ökologische Verteilung

Backround Schicht

library(ggplot2) 
library(ggmap) 

nc <- get_map("Persian Gulf", zoom = 6, maptype = 'terrain', language = "English") 
ncmap <- ggmap(nc, extent = "device") 

Andere Schichten

ncmap+ 
    stat_density2d(data=sample.data3, aes(x=long, y=lat, fill=..level.., alpha=..level..),geom="polygon")+ 
    geom_point(data=sample.data3, aes(x=long, y=lat))+ 
    geom_point(aes(x =50.626444, y = 26.044472), color="red", size = 4)+ 
    scale_fill_gradient(low = "green", high = "red") + scale_alpha(range = c(0.00, 0.25), guide = FALSE) 

aber wird Ich mag das verwenden stat_density2d, um die Verteilungen von Hunderten von Arten zu zeigen (die in Spalten z SP1 .... SPn) über dem Gewässer statt nur Breiten- und Längengrad anzuzeigen.

Ist es auch möglich, meine Heat Map auf den Wasserkörper zu beschränken? Ich werde jede Hilfe und Empfehlungen schätze ich auf diese bitte image generated with the code above

+1

wäre es von Vorteil sein, einige Ihrer Daten sample.data3 zu erhalten. 'dput (head (sample.data3, 20))' sollte genug geben, um in 'ggplot' mit – Vedda

+3

zu spielen Der Wasserbedarf ist interessant. –

+0

@Amstell, hier ist eine Dropbox-Verknüpfung zu einem komprimierten Ordner, der ein Rstudi-Projekt mit allen Beispieldaten und dem Polygon enthält, mit dem ich arbeite. [link] (https://www.dropbox.com/s/5zssgq4kqlykbf0/Persian%20Gulf.rar?dl=0) Danke – Hammao

Antwort

2

Mein Ansatz auf Ihre Frage pragmatisch ist bekommen: einfach über die Heatmap Verteilung der Schicht aus Golfstaaten setzen. Dies schneidet die Heatmap entsprechend ab. Beachten Sie jedoch, dass die Heatmap immer noch so berechnet wird, als ob sie nicht abgeschnitten wäre. Das bedeutet die Dichteberechnung ist nicht beschränkt auf den Wasserkörper nur, aber es wird einfach visuell beschnitten.

Aus Gründen der Reproduzierbarkeit wird im folgenden Code davon ausgegangen, dass Sie die von @Hammao bereitgestellte .rar-Datei entpackt und den Code im resultierenden Ordner Persian Gulf ausgeführt haben.

# get sample data 
sample.data <- read.csv("sample.data3.csv") 

Jetzt müssen wir die Landformen für die Golfstaaten bekommen. Ich benutze dafür das rworldmap Paket.

Jetzt ist es einfach eine Frage der Lagen in der richtigen Reihenfolge.

# generate plot 
ggplot(sample.data) + 

    # first we plot the density... 
    stat_density_2d(aes(x = long, y = lat, 
         fill = ..level..), 
        geom="polygon", 
        alpha = 0.5) + 

    # ... then we plot the points 
    geom_point(aes(x = long, y = lat)) + 

    # gradient options 
    scale_fill_gradient(low = "green", high = "red") + 
    scale_alpha(range = c(0.00, 0.25), guide = FALSE) + 

    # and now put the shapes of the gulf states on top 
    geom_polygon(data = gulf_simpl_fort, 
       aes(x = long, 
        y = lat, group = group), 
       color = "black", fill = "white", 
       inherit.aes = F) + 

    # now, limit the displayed map only to the gulf 
    coord_equal(xlim = c(min(PG_fort$long), max(PG_fort$long)), 
       ylim = c(min(PG_fort$lat), max(PG_fort$lat))) + 
    theme_bw() 

enter image description here

+0

genau das wollte ich machen ...Aber anstatt nur lat und long, möchte ich für jede Variable plotten ... (ich werde mit mehreren Plots enden). lat & long dient nur dazu, die Variable räumlich zu lokalisieren. Ich werde diese Antwort ändern, indem ich eine loop-Anweisung hinzufüge, so dass die "fill = .. level .." Ihrer Antwort die wechselnden SP1 --- SPn aufnehmen wird. Ich hoffe, dies macht die Ausgangsfrage klarer. – Hammao

+0

Ok danke für die Klarstellung. Ich habe die Antwort aktualisiert. Um lat/long für jede Spezies getrennt darzustellen, können Sie auch Facetten verwenden. Da es so viele Arten gibt, wird es jedoch viele Facetten geben und das Lesen der Handlung könnte schwierig werden. Wie Sie vorgeschlagen haben, durch die Spezies zu schlendern und separate Parzellen zu speichern, könnte schließlich der beste Weg sein. – Felix

+0

danke für die Hilfe ... – Hammao