Полигоны красиво обрезают ggplot2 / ggmap при разных уровнях масштабирования

Я играю с набором пространственных данных (в основном полигоны над областью города), и я хотел бы создать разные виды, основанные на разных уровнях масштабирования. Все хорошо, когда у меня есть граничная рамка графика больше, чем область, которая содержит многоугольники. Но при увеличении некоторые полигоны получают детали, находящиеся за пределами граничного блока, и вывод для этих полигонов проблематичен: точки многоугольника за пределами граничного блока не отображаются, в результате чего многоугольники не обрезаются в пределах граничного блока ( как и следовало ожидать) а точнее не рассматриваются. полигоны являются неполными, и полигон соединяет только точки, остающиеся на графике (нормальное поведение, но нежелательное).

хороший пример, который стоит всего обсудить, вот пример проблемы:

#initialisation
library(ggmap)
require(MASS)

data(zips)

# overview
ggmap(get_map(maptype = "satellite", zoom = 8), extent = "device") +
        geom_polygon(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = NA, fill = "red", alpha = .5) +
        geom_path(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = "white", alpha = .7, size = .4)

# problematic view    
x11()
ggmap(get_map(maptype = "satellite", zoom = 12), extent = "device") +
        geom_polygon(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = NA, fill = "red", alpha = .5) +
        geom_path(aes(x = lon, y = lat, group = plotOrder),
                data = zips, colour = "white", alpha = .7, size = .4)

знаете ли вы о хорошей технике для правильной обрезки полигонов на границах границ графика? Спасибо за вашу помощь

паскаль