R 使用ggplot打印带有孔的多边形(在城市地图中)
我有3个shp文件用于创建城市地图:R 使用ggplot打印带有孔的多边形(在城市地图中),r,ggplot2,shapefile,R,Ggplot2,Shapefile,我有3个shp文件用于创建城市地图: land.shp(绘制水面上土地的多边形) road.shp(绘制所有道路的多边形,注意其中一些是“环形道路”,这意味着中间有一个洞) building.shp(多边形图形所有建筑物) 我使用QGIS绘制了我想要的地图,然后使用ggplot播放land.shp,然后使用road.shp和building shp再次播放。下面是Google地图的输出,以说明我的问题: 你可以看到有2座桥和一些海(我没有海平面,我只是把背景设置成蓝色)在它们之间,用蓝点标
- land.shp(绘制水面上土地的多边形)
- road.shp(绘制所有道路的多边形,注意其中一些是“环形道路”,这意味着中间有一个洞)
- building.shp(多边形图形所有建筑物)
有人能教我如何在R中显示road.shp层后面的东西吗?谢谢。绘制带孔多边形的一个常见约定是:
- 一个闭合多边形,其点沿逆时针方向前进形成一个实体形状
- 点沿顺时针方向前进的闭合多边形形成一个孔
library(ggplot2)
ids <- letters[1:2]
# IDs and values to use for fill colour
values <- data.frame(
id = ids,
value = c(4,5)
)
# Polygon position
positions <- data.frame(
id = rep(ids, each = 10),
# shape hole shape hole
x = c(1,4,4,1,1, 2,2,3,3,2, 5,10,10,5,5, 6,6,9,9,6),
y = c(1,1,4,4,1, 2,3,3,2,2, 5,5,10,10,5, 6,9,9,6,6)
)
# Merge positions and values
datapoly <- merge(values, positions, by=c("id"))
ggplot(datapoly, aes(x=x, y=y)) +
geom_polygon(aes(group=id, fill=factor(value))) +
scale_fill_discrete("Key")
库(ggplot2)
ids为什么要用多边形绘制道路?道路是线性特征,因此应该是直线。线数据集没有孔。那么,你所包含的地图实际上并没有显示R中发生了什么?R输出不是更有用吗?更令人困惑的是,如果在R中读入的“海”确实有一个区域,并且它显示为灰色,那么要么绘图不考虑“多孔性”,要么海洋确实是一个可以绘制蓝色(或透明)的实际区域。我们真的需要数据本身,或者你正在使用的代码和你看到的结果。如果你也想要轮廓,为每个环分配一个变量,并使用geom_path:datapoly$rings=c(rep(1,5),rep(2,5),rep(3,5),rep(4,5))和添加+geom_path(aes(group=rings))到你的ggplot,以下可能也相关