用图案填充地理空间多边形 - R.

Luk*_*rau 5 gis r ggplot2

我有一张波斯尼亚地图,根据居住在那里的少数民族的颜色进行着色.但是,我想使用不同的图案而不是颜色(或灰度),因为它将以黑白打印.
我搜索过,但找不到办法.有没有人知道如何做到这一点? 链接到shapefile

到目前为止,这是我的代码:

library(RColorBrewer)
library(maptools)
library(rgdal)
library(rgeos)
library(ggplot2)
library(gridExtra)

setwd("path")

bosnia <- readOGR("path/to/file", "bosnia_analysis", 
                verbose = TRUE, stringsAsFactors = FALSE)

bosnia <- readShapePoly("path/to/bosnia_analysis.shp",proj4string=CRS("+proj=longlat +datum=WGS84"))
bosnia.df <- bosnia@data

serbs <- bosnia[bosnia$SEPRIORITY > bosnia$CRPRIORITY & bosnia$SEPRIORITY > bosnia$MOPRIORITY,]
croats <-  bosnia[bosnia$CRPRIORITY > bosnia$SEPRIORITY & bosnia$CRPRIORITY > bosnia$MOPRIORITY,]
moslems <- bosnia[bosnia$MOPRIORITY > bosnia$CRPRIORITY & bosnia$MOPRIORITY > bosnia$SEPRIORITY,]

p <- ggplot(bosnia, aes(x = long, y = lat, group = group)) + 
  geom_polygon(aes(x=long,y=lat,group=group), fill="white", colour="grey") +
  geom_polygon(data=serbs, aes(x=long,y=lat,group=group), fill="black", colour="grey") +
  geom_polygon(data=croats, aes(x=long,y=lat,group=group), fill="green", colour="grey") +
  geom_polygon(data=moslems, aes(x=long,y=lat,group=group), fill="red", colour="grey") +
  # Styling
  coord_map() +
  labs(x="Bosnia", y=" ") + 
  theme_bw() + 
  theme(panel.grid.minor=element_blank(), panel.grid.major=element_blank()) + 
  theme(axis.ticks = element_blank(), axis.text.x = element_blank(), axis.text.y = element_blank()) + 
  theme(panel.border = element_blank())

p
Run Code Online (Sandbox Code Playgroud)

这给了我以下地图: 在此输入图像描述

Spa*_*man 13

沟渠ggplot基础图形.虽然只有三组我会认为黑色,白色和中灰色可以正常工作.

require(sp)
require(rgdal)

bosnia = readOGR(".","bosnia_analysis")
proj4string(bosnia)=CRS("+init=epsg:4326")
Run Code Online (Sandbox Code Playgroud)

而不是分成3个数据集,从三个TRUE/FALSES创建一个新的分类变量:

serbs = bosnia$SEPRIORITY > bosnia$CRPRIORITY & bosnia$SEPRIORITY > bosnia$MOPRIORITY
croats =  bosnia$CRPRIORITY > bosnia$SEPRIORITY & bosnia$CRPRIORITY > bosnia$MOPRIORITY
moslems = bosnia$MOPRIORITY > bosnia$CRPRIORITY & bosnia$MOPRIORITY > bosnia$SEPRIORITY

bosnia$group=NA
bosnia$group[serbs]="Serb"
bosnia$group[croats]="Croat"
bosnia$group[moslems]="Moslem"
bosnia$group=factor(bosnia$group)
Run Code Online (Sandbox Code Playgroud)

检查无人在多个类别中:

sum(serbs&&croats&&moslems) # should be zero
Run Code Online (Sandbox Code Playgroud)

现在你可以得到一个漂亮的彩色情节:

spplot(bosnia, "group")
Run Code Online (Sandbox Code Playgroud)

但我不知道如何在不同的单声道样式中做到这一点,所以它回到基本图形:

plot(bosnia,density=c(5,10,15)[bosnia$group], angle=c(0,45,90)[bosnia$group])
Run Code Online (Sandbox Code Playgroud)

波斯尼亚的阴影地图

调整参数味道.您可以使用legend相同的参数来做一个很好的图例.