2010-11-02 81 views
2

我很抱歉,因为我确定这是一个基本问题。我想要做的就是使用地图包在R中创建一个非常简单的等值线地图。这是我在R中映射任何数据的第一次尝试。R中的基本Choropleth状态图

我的地理位置是包括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

对于这样的人群,我建议查看choroplethr软件包。它旨在简化此:https://github.com/trulia/choroplethr – Ari 2014-03-19 23:19:59

回答

4

如果你拿出regions = names(choro),你会得到一个更加完整的地图。如果你想要choro矢量中可能丢失的项目被绘制,那么为什么不用“白色”代替颜色呢? alt text如果您需要更完整的答案,请提供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) 

见所附图片:

+0

当我删除地区线,我的地图是完全填充。然而,我怀疑我必须安排我的矢量choro中的数据来匹配各州的顺序,如果它有效的话,这很好。最简单的数据排列方式?没问题。 – Btibert3 2010-11-02 02:10:55

+0

没错。颜色矢量得到回收,所以任何你想成为轮廓的状态都需要一个“白色”的颜色。要查看正确的状态缩写,请键入> state.abb – 2010-11-02 03:31:11

1

相关的问题在这里:Choropleth mapping issue in R 和指南这里:http://www.thisisthegreenroom.com/2009/choropleths-in-r/

正如前面提到的,你会想与绘制的区域合并你的颜色。上面的第二个链接显示了一种技术来匹配状态缩写与R想要/需要使用地图包的完整状态名称。取决于你的数据来自哪里,在读入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用于合并数据轻松创建等值线图的其他例子。

+0

感谢您的链接。我看到了绿屋教程,这让我头脑发热。这似乎更符合我对R的工作知识。我会给它一个机会。谢谢!! – Btibert3 2010-11-02 13:44:43