gpt4 book ai didi

r - 多边形可以很好地裁剪不同缩放级别的ggplot2/ggmap

转载 作者:行者123 更新时间:2023-12-03 11:54:37 26 4
gpt4 key购买 nike

我正在使用一个空间数据集(主要是一个城市区域上的多边形),并且我想根据不同的缩放级别来产生不同的 View 。
当绘图边界框大于包含多边形的区域时,一切都很好。但是在放大时,某些多边形会得到边界框之外的零件,并且这些多边形的输出是有问题的:边界框之外的多边形点不会显示,从而导致多边形无法在边界框限制处裁剪(正如预期的那样),但并未考虑。多边形是不完整的,并且多边形仅连接图上剩余的点(正常行为,但不需要)。

一个值得所有讨论的好例子,这里是问题的演示:

#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)

您是否知道一种很好的技术,可以在图边界框限制处正确裁剪多边形?
谢谢你的帮助

帕斯卡

最佳答案

通常,此裁剪是由于使用缩放限制(落在范围外的点)与使用坐标限制(这是真正的缩放,只是将内部的零件绘制在范围之外的零件进行缩放)进行缩放。 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()

关于r - 多边形可以很好地裁剪不同缩放级别的ggplot2/ggmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13469566/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com