Ich habe eine harte Zeit, um Farben automatisch zu erstellen, die filled.contour verwenden, der kriging Diagramm anzeigt und Levels() vermeidet.automatische Farbstufen in .filled.contour setzen? (Kriging)
Ich kann meine Ergebnisse plotten und die Legende sehen, aber warum meine Farben sich wiederholen? Also, warum Intervall 4.5 - 5.0 hat die gleiche Farbe wie die 7.0 - 7.5? und wie kann ich es beheben?
filled.contour(x = seq(0,1, length.out = nrow(predmat3)),
y = seq(0,1, length.out = ncol(predmat3)),
z = predmat3,
col = brewer.pal(5,"Purples"), nlevels = 5)
Ganz lange reproduzierbares Beispiel adaptiert von https://rpubs.com/nabilabd/118172 (berechnet Kriging von Voronoi Abtasten tesselation Daten für Stützpunkte)
library(sp)
library(gstat)
library(RColorBrewer)
# https://rpubs.com/nabilabd/118172
# packages for manipulation & visualization
suppressPackageStartupMessages({
library(dplyr) # for "glimpse"
library(ggplot2)
library(scales) # for "comma"
library(magrittr)
})
data(meuse)
# create spdf
meuse.spdf<-meuse
# convert to spdf
coordinates(meuse.spdf) <- ~ x + y
# calculate voronoi tesselation - will be needed to create underlying point data
voronoipolygons = function(layer) {
require(deldir)
crds = [email protected]
z = deldir(crds[,1], crds[,2])
w = tile.list(z)
polys = vector(mode='list', length=length(w))
require(sp)
for (i in seq(along=polys)) {
pcrds = cbind(w[[i]]$x, w[[i]]$y)
pcrds = rbind(pcrds, pcrds[1,])
polys[[i]] = Polygons(list(Polygon(pcrds)), ID=as.character(i))
}
SP = SpatialPolygons(polys)
voronoi = SpatialPolygonsDataFrame(SP, data=data.frame(dummy = seq(length(SP)), row.names=sapply(slot(SP, 'polygons'),
function(x) slot(x, 'ID'))))
}
meuse.voro <- voronoipolygons(meuse.spdf)
# create underlying grid
s.grid <- spsample(meuse.voro, type = "regular", n = 6000)
# calculate kriging
# create variogram
lzn.vgm <- variogram(log(zinc)~1, meuse.spdf) # calculates sample variogram values
lzn.fit <- fit.variogram(lzn.vgm, model=vgm(1, "Sph", 900, 1)) # fit model
plot(lzn.vgm, lzn.fit) # plot the sample values, along with the fit model
# calculate kriging
lzn.kriged <- krige(log(zinc) ~ 1, meuse.spdf, s.grid, model=lzn.fit)
# extract the unique x and y locations in the grid
ux<-unique(coordinates(lzn.kriged)[,1])
uy<-unique(coordinates(lzn.kriged)[,2])
# extract the predicted values and format var1.pred into a matrix of gridded values
predmat3 <- matrix(lzn.kriged$var1.pred, length(ux), length(uy))
# display the data???
filled.contour(x = seq(0,1, length.out = nrow(predmat3)),
y = seq(0,1, length.out = ncol(predmat3)),
z = predmat3,
col = brewer.pal(5,"Purples"), nlevels = 5)
Oh, ich sehe jetzt, warum die Anzahl der Nlevels -1 (6 - 1 = 5) ist! Brewer.pal definiert die Anzahl der Farben, die ich brauche (6) und levelt die "Pausen/Grenzen/Begrenzungen" zwischen ihnen! :) Danke, @beetroot – maycca