Я просто пытаюсь заполнить белым цветом область за пределами простого полигона. По какой-то причине он облажался, протянув странный кол через центр, как будто думает, что это истребитель вампиров или что-то в этом роде.
Я пытался следовать этот пост, но что-то пошло не так. Я думал, что это будет проще, но оказалось, что это довольно вспыльчивый маленький демон.
Как заполнить белым цветом область за пределами удобного для проецирования многоугольника, не испортив область внутри многоугольника? спасибо
# reproducible example
library(rgeos)
library(maptools)
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 )
# difference between connecticut and its box
ct.shp.diff <- gDifference( ct.shp.env , ct.shp )
# prepare both shapes for ggplot2
f.ct.shp <- fortify( ct.shp )
outside <- fortify( ct.shp.diff )
library(ggplot2)
# 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=outside, aes(x=long,y=lat), fill='white')
co <- coord_map( project = "merc" )
# this works
plot + layer1
# this does not
plot + layer1 + layer2
# this also does not
plot + layer1 + layer2 + co
plot + layer2 + layer1
? Кажется, это работает. Когда вы рисуете многоугольник в многоугольнике, я думаю, вы должны сначала нарисовать внешний многоугольник. Этот пост может оказаться полезным. - person jazzurro   schedule 14.10.2014ct.shp.env
, которые я хотел бы отобразить, а слой 2 должен скрыть точки за пределами формы Коннектикута. плюс даже с вашим решением слева все еще есть эта странная форма. :( в любом случае, развеlayer1
иlayer2
не должны идеально дополнять друг друга? Я не понимаю, почему переключение порядка должно иметь значение? - person Anthony Damico   schedule 14.10.2014