Diese Frage ist ein Follow-up meiner prior SO question und ist verwandt mit this question.wie man schnippt oder beschneidet oder ein großes weiß füllt. erweitert (um 10%) Rechteck außerhalb eines Polygons mit ggplot2
Ich versuche nur einen Bereich zu füllen, der 10% größer ist als ein einfaches Polygon mit ggplot2. Vielleicht gruppiere ich Dinge falsch? hier ist ein Foto von der Spitze mit reproduzierbaren Code unter
# reproducible example
library(rgeos)
library(maptools)
library(raster)
shpct.tf <- tempfile() ; td <- tempdir()
download.file(
"ftp://ftp2.census.gov/geo/pvs/tiger2010st/09_Connecticut/09/tl_2010_09_state10.zip" ,
shpct.tf ,
mode = 'wb'
)
shpct.uz <- unzip(shpct.tf , exdir = td)
# read in connecticut
ct.shp <- readShapePoly(shpct.uz[ grep('shp$' , shpct.uz) ])
# box outside of connecticut
ct.shp.env <- gEnvelope(ct.shp)
ct.shp.out <- as(1.2 * extent(ct.shp), "SpatialPolygons")
# difference between connecticut and its box
ct.shp.env.diff <- gDifference(ct.shp.env , ct.shp)
ct.shp.out.diff <- gDifference(ct.shp.out , ct.shp)
library(ggplot2)
# prepare both shapes for ggplot2
f.ct.shp <- fortify(ct.shp)
env <- fortify(ct.shp.env.diff)
outside <- fortify(ct.shp.out.diff)
# create all layers + projections
plot <- ggplot(data = f.ct.shp, aes(x = long, y = lat)) #start with the base-plot
layer1 <- geom_polygon(data=f.ct.shp, aes(x=long,y=lat), fill='black')
layer2 <- geom_polygon(data=env, aes(x=long,y=lat,group=group), fill='white')
layer3 <- geom_polygon(data=outside, aes(x=long,y=lat,group=id), fill='white')
co <- coord_map(project = "albers" , lat0 = 40.9836 , lat1 = 42.05014)
# this works
plot + layer1
# this works
plot + layer2
# this works
plot + layer1 + layer2
# this works
plot + layer2 + co
# this works
plot + layer1 + layer3
# here's the problem: this breaks
plot + layer3 + co
# this also breaks, but it's ultimately how i want to display things
plot + layer1 + layer3 + co
# this looks okay in this example but
# does not work for what i'm trying to do-
# cover up points outside of the state
plot + layer3 + layer1 + co
Aus der Dokumentation der 'coord_map' -Funktion:" Dies ist immer noch experimentell, und wenn Sie einen Rat zu einem besseren (oder korrekteren) Weg dazu geben möchten, lassen Sie es mich bitte wissen ". Meine Wette ist, dass Sie einen Fehler in dieser "experimentellen" Funktion gefunden haben. – Pop
Meinst du 10% größer als die Abmessungen der Bounding Box der Poly? – jbaums
@jbaums ja, das tue ich. Also für dieses Beispiel, 10% jenseits des äußersten Bereichs von Connecticuts Staatsgrenzen in jeder Richtung :) –