使用R在地图中交叉影线

时间:2013-01-28 23:14:09

标签: r maps

我想在美国大陆的R(使用地图套餐)制作一张地图,其中一个州填写黑色(CA),一个州(TX)填写交叉舱口或一些其他模式。其他州应该有黑色边框,没有填充。我确信这是一个简单的解决方案,但我还没有找到它。

3 个答案:

答案 0 :(得分:4)

我最近遇到了同样的问题,但有太多的状态要用手工制作多边形。似乎只需将密度= 10添加到特定状态的地图中,就会用阴影条填充它。

因此,对于此示例,请尝试:

map("state")     
map("state", add = TRUE, region = c("texas"), density=10, fill=TRUE)
map("state", add = TRUE, region = c("california"),  fill=TRUE)

我在这里得到了这个想法: Fill Geospatial polygons with pattern - R

答案 1 :(得分:3)

我可以通过保存状态数据和重新绘制来实现这一点。需要一点polygon摆弄,以便状态多边形的轮廓以正确的顺序绘制,而不会使自身重复。需要多少摆弄可能取决于您想要的状态多边形。在这种情况下,我只需要逆转德克萨斯州/新墨西哥州的边界。

library(maps)
map("state")     
tempplot <- map("state", add = TRUE, region = c("texas"),plot=FALSE)

# fix the border with new mexico to draw it in the correct order
tempplot$x[829:861] <- tempplot$x[861:829]
tempplot$y[829:861] <- tempplot$y[861:829]

polygon(
  na.omit(tempplot$x),
  na.omit(tempplot$y),
  border=1,
  density=10
)

map("state", add = TRUE, region = c("california"), fill=TRUE, col="black")

Yeehah! I'm all hatched up down here in Texas!

答案 2 :(得分:1)

这应该是一个好的开始。

library(maps)
map('state')     
map("state", col = "black", fill = TRUE, add = TRUE, region = c('california'))
map("state", col = "red", fill = TRUE, add = TRUE, region = c('texas'))

PS:交叉阴影填充图案通常被拒绝。所以我在这里用红色填充德克萨斯州。

修改

一个选择是使用 lty lwd 来区分状态。它看起来很棘手,但结果很清楚。

map("state", lty = 3)
map("state", col = "black", fill = TRUE, add = TRUE, region = c('california'))
map("state", lty=1,lwd = 3, fill = FALSE, add = TRUE, region = c('texas'))

enter image description here