gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 11:23:21 42 4
gpt4 key购买 nike

我有一张波斯尼亚 map ,根据居住在那里的多数族裔对城市进行着色。
但是,我想使用不同的图案而不是颜色(或灰度),因为它将以黑白打印。
我已经搜索过,但找不到方法。有没有人知道如何做到这一点?
Link to 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

这给了我以下 map :
enter image description here

最佳答案

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

require(sp)
require(rgdal)

bosnia = readOGR(".","bosnia_analysis")
proj4string(bosnia)=CRS("+init=epsg:4326")

不是分成 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)

检查没有人属于多个类别:
sum(serbs&&croats&&moslems) # should be zero

现在你可以得到一个漂亮的彩色图:
spplot(bosnia, "group")

但我看不出如何在不同的单声道风格中做到这一点,所以它回到基本图形:
plot(bosnia,density=c(5,10,15)[bosnia$group], angle=c(0,45,90)[bosnia$group])

shaded map of Bosnia

根据口味调整参数。您可以使用 legend用相同的参数做一个很好的图例。

关于r - 用图案填充地理空间多边形 - R,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21677489/

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