Pas*_*cal 21 r polygon 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)
Run Code Online (Sandbox Code Playgroud)
你知道一个很好的技术来在地块边界框限制下正确裁剪多边形吗?谢谢你的帮助
帕斯卡尔
Bri*_*ggs 28
一般来说,这种裁剪是由于使用比例限制(在该范围之外的落点)进行缩放而不是使用坐标限制(这是真正的缩放,只是绘制内部的部分以及仍然存在范围之外的部分). ggmap没有一种简单的方法来指示应该使用第二种缩放类型,但是看一下这个功能,可以将相关部分拉出并放回到一起:
s12 <- get_map(maptype = "satellite", zoom = 12)
ggmap(s12, base_layer=ggplot(aes(x=lon,y=lat), data=zips),
extent = "normal", maprange=FALSE) +
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) +
coord_map(projection="mercator",
xlim=c(attr(s12, "bb")$ll.lon, attr(s12, "bb")$ur.lon),
ylim=c(attr(s12, "bb")$ll.lat, attr(s12, "bb")$ur.lat)) +
theme_nothing()
Run Code Online (Sandbox Code Playgroud)
