我的地理位置是包括DC在内的48个州。以下是我想要绘制的数据集的前几行。
> head(choro, n=7)
AL AR AZ CA CO CT DC
"red" "red" "red" "blue" "blue" "blue" "red"
当我尝试绘制基本地图时:
map("state",
regions = names(choro),
lty = 1, lwd =1,
boundary=TRUE,
fill=TRUE,
col=choro)
attached image就是我看到的。我是R的新手,但我认为未填写的状态没有正确合并,但我相信我使用的是“标准”状态缩写。
我做错了什么!/需要修理?
非常感谢任何帮助。
答案 0 :(得分:5)
如果你拿出regions = names(choro),你会得到一张更完整的地图。如果你想要绘制choro矢量中可能缺少的项目,那么为什么不用“white”代替颜色?如果你需要更完整的答案,那么提供choro的完整副本。
choro <- c( "red", "red", "red" ,"blue" ,"blue", "blue", "red")
require(maps)
data(state)
names(choro) <-names(state)[1:7]
map("state", lty = 1, lwd =1,
boundary=TRUE, fill=TRUE,
col=choro)
见附图:
答案 1 :(得分:1)
此处的相关问题:Choropleth mapping issue in R 这里有教程:http://www.thisisthegreenroom.com/2009/choropleths-in-r/
如前所述,您需要将颜色与绘制的区域合并。上面的第二个链接显示了一种技术,可以将状态缩写与R想要/需要使用maps包的完整状态名称进行匹配。根据您的choro
数据的来源,在读入R之前用状态名称替换状态缩写可能最简单。另外需要注意的是,有63个状态对象被绘制。例如,New Yorsk有几个不同的对象。对于完整的地图,必须映射到这些重复项。
我建议两次调用map
函数 - 第一个绘制填充,第二个添加不同的轮廓。例如:
# Extract mapnames for States
mapnames <- data.frame(
state = map("state",plot=FALSE)[4]$names
, col = sample(c("pink", "purple", "lavender", "blue"), 63, replace = TRUE)
)
#Plot the colors
map("state", regions = mapnames$state, col = mapnames$col, fill = TRUE, lty = 1, lwd= 1)
#Plot the outlines
map("state", regions = mapnames$state, col = "black", fill = FALSE, add = TRUE, lty = 1, lwd = 1)
您还可以查看map_data()
中的ggplot2
函数,了解合并数据以便轻松创建等值区域图的其他示例。