Wie kann ich die Legende des räumlichen Rasterkartenplots mit ggplot im Vergleich zu einer spplot() Legende verbessern?
Ich möchte räumliche Karten mit ggplot() anstelle von spplot() erstellen, aber es gibt ein paar Dinge, die ich verbessern möchte im Vergleich zur spplot:
- Erstellen Sie eine ggplot Legende, die von kleinen (unten) zu großen Werten (oben) geht
- Legen Sie die Unterbrechungen in der ggplot Legende ähnlich wie bei der spplot() Legende fest, damit ich weiß, wo die Grenzen jeder Farbe liegen.
## Pakete laden
require(raster)
require(ggplot2)
require(rgdal)
require(RColorBrewer)
set.seed(1)
r <- raster(xmn=-110, xmx=-90, ymn=40, ymx=60, ncols=40, nrows=40,
crs="+proj=lcc +lat_1=48 +lat_2=33 +lon_0=-100
+ellps=WGS84")
r <- setValues(r,matrix(rnorm(1600, mean=0.4,sd=0.2)))
## 1. Räumliche Karte mit spplot
cuts <-seq(minValue(r),maxValue(r),length.out=8)
cuts = round(cuts,digits=2)
col.regions = brewer.pal(length(cuts)+3-1, "RdYlGn")
print(
spplot(as(r, 'SpatialGridDataFrame'),at=cuts,
col.regions=col.regions,
colorkey=list(labels=list(at=cuts),at=cuts), pretty=TRUE,
scales=list(draw=T)
)
)
## 2. Räumliche Karte mit ggplot
p = rasterToPoints(r); df = data.frame(p)
colnames(df) = c("x", "y", "NDVI")
p <- ggplot(data=df) + geom_tile(aes(x, y, fill=NDVI)) +
coord_equal() + labs(x=NULL, y=NULL) +
scale_fill_gradient2(low="red", mid="yellow",high="green",
limits=c(minValue(r),maxValue(r)), midpoint = 0.4) + theme_bw() +
scale_x_continuous(expand=c(0,0)) + scale_y_continuous(expand=c(0,0))
print(p)
Ergebnis von spplot()
Ergebnis von ggplot()
10 Stimmen
Bitte verwenden Sie keine Rot-Grün-Farbkombinationen. Die 5-10% der Männer mit Rot-Grün-Farbschwäche finden sie sehr schwer zu lesen.
0 Stimmen
Der Link zur Website von Koske - veranschaulicht mehr oder weniger, was ich gerne tun würde. Ich werde die Kapazität von ggplot() weiter erforschen, Farben anpassen, die Legende verbessern und ein Update unten posten. Alle Tipps/Beispiele sind willkommen. Danke