Ich habe eine Shapefile here hochgeladen.Chloropleth: Kontrollpolygonfüllungen
#First, read it in
library(rgdal)
pols <- readOGR(dsn="stack", layer="shapefile")
plot.df <- broom::tidy(pols, by="nr") %>% mutate(id = as.numeric(id))
#some values I'd like to plot
plot.df$value[plot.df$id==0] <- 4
plot.df$value[plot.df$id==1] <- 3
plot.df$value[plot.df$id==2] <- 3
library(ggplot2)
ggplot(plot.df, aes(x=long, y=lat))+
geom_polygon(aes(fill=factor(value), group=group))+
coord_fixed()+
scale_fill_manual(values = c("red", "green", "blue", "orange"),
breaks = c("1", "2", "3", "4"))
Dieser Code sollte die folgenden Plot erzeugen:
Die Sache ist, dass ich ein anderes Polygon haben, die (farbig in grün) erscheinen soll.
Ich habe mit einer Vermeidung des Problems kommen:
ggplot(plot.df, aes(x=long, y=lat))+
geom_polygon(aes(fill=factor(value), group=group))+
geom_polygon(data=subset(plot.df, id==0), aes(fill=factor(value), group=group))+
coord_fixed()+
scale_fill_manual(values = c("red", "green", "blue", "orange"),
breaks = c("1", "2", "3", "4"))
Aber ich bin sicher, dass es eine elegantere Lösung. Die Verwendung von id
als Gruppierungsvariable wie vorgeschlagen here führt zu verzerrten Polygonen.
Hat jemand noch andere Ideen?
Ich möchte die Kontrolle über das Plotten sein, um ... – Thomas