ich ein Grundstück von einer Fläche, wie Lateinamerika will, die Datei von IPUMSI Welt Form mit ...Vermeiden hoizontal Linien und Formen verrückt, wenn Karten in Plotten ggplot2
https://international.ipums.org/international/resources/gis/IPUMSI_world.zip
... I einige weitere IPUMS Bezirke später hinzufügen, so will ich wirklich diese Schicht als meine Vorlage verwenden.
ich Schwierigkeiten mit der Handlung, wenn ich Grenzen durch coord_map
in ggplot2 hinzuzufügen.
Die anfängliche räumliche Datei sieht in Ordnung
library("ggplot2")
library("raster")
sd0 <- readShapePoly("./IPUMSI_world.shp")
df0 <- fortify(sd0)
ggplot(data = df0, mapping = aes(x = long, y = lat, group = group)) +
geom_polygon(fill = "black", colour = "black")
Wenn ich auf Lateinamerika konzentrieren möchte ich einige unerwünschte horizontale Linien erhalten:
ggplot(data = df0, mapping = aes(x = long, y = lat, group = group)) +
geom_polygon(fill = "black", colour = "black") +
coord_map(xlim = c(-125, -30), ylim = c(-60, 35))
I versuchte dies mit derzu behebenFunktion, im Anschluss an die Führung here
library("PBSmapping")
df1 <- df0
names(df1)[c(1,2,6,3)] <- c("X","Y","PID","POS")
df1$PID <- as.numeric(df1$PID)
df2 <- clipPolys(polys = df1, xlim = c(-125, -30), ylim = c(-60, 35), keepExtra = TRUE)
names(df2)[names(df2)=="X"] <- "long"
names(df2)[names(df2)=="Y"] <- "lat"
names(df2)[names(df2)=="PID"] <- "id"
ggplot(data = df2, mapping = aes(x = long, y = lat, group = group)) +
geom_polygon(fill = "black", colour = "black")
Nicht wirklich super zufrieden mit diesem Grundstück auch nicht. Ich dachte, es ist ein Problem mit Löchern war, wie in diesem question, aber die vorgeschlagene Lösung erzeugt die gleichen Plots wie oben:
gghole <- function(fort){
poly <- fort[fort$id %in% fort[fort$hole,]$id,]
hole <- fort[!fort$id %in% fort[fort$hole,]$id,]
out <- list(poly,hole)
names(out) <- c('poly','hole')
return(out)
}
ggplot(df2, aes(x=long, y=lat, group=group)) +
geom_polygon(data = gghole(df2)[[1]], fill = "black", colour = "black") +
geom_polygon(data = gghole(df2)[[2]], fill = "black", colour = "black")
ggplot(df0, aes(x=long, y=lat, group=group)) +
geom_polygon(data = gghole(df0)[[1]], fill = "black", colour = "black") +
geom_polygon(data = gghole(df0)[[2]], fill = "black", colour = "black") +
coord_map(xlim = c(-125, -30), ylim = c(-60, 35))
Ich denke, das wird langsamer sein als Grenzen in scale_continuous Einstellung, da die gesamten Daten berechnet werden dann abgeschnitten. scale_continuous rendert nur die Daten, die Sie plotten möchten. – dww
Langsamer, aber Sie werden nicht fehlen Bits von Ländern bekommen. – NJBurgo
Messepunkt. Also, ich denke, es hängt von der Endnutzung ab, die bevorzugt werden würde. Die ‚fehlenden‘ Bits von Ländern sind die Teile, die Sie sagen, es zu unterlassen, indem sie die Grenzen zu setzen, die möglicherweise nicht das sein, was die Nutzer wollen. – dww