2013-07-26 39 views
1

我试图创建一个地区分布图,基本上国家集团进入销售区域。例如:乔治亚州,佛罗里达州和阿拉巴马州将被视为一个名为东南的领土。与各国自定义地区分布图分为地区

好像我应该能够从map_data使用现有的状态shapefile数据(“状态”)创建与这些地区新的shape文件。

但我不完全知道如何做到这一点。


感谢您的帮助球员。让我试着添加一些代码来解释。

library(ggplot2) 
library(maps) 
library(plyr) 
library(grid) 

#load us state map data 
us_state_map = map_data("state"); 

#map each state to a division 
us_state_map$division[us_state_map$region %in% c("connecticut", "maine", "massachusetts", "new hampshire", "rhode island", "vermont")] <- "D1" 
us_state_map$division[us_state_map$region %in% c("new jersey","new york","puerto rico","virgin islands")] <- "D2" 
us_state_map$division[us_state_map$region %in% c("delaware","district of columbia","maryland","pennsylvania","virginia","west virginia")] <- "D3" 
us_state_map$division[us_state_map$region %in% c("alabama","florida","georgia","kentucky","mississippi","north carolina","south carolina","tennessee")] <- "D4" 
us_state_map$division[us_state_map$region %in% c("illinois","indiana","michigan","minnesota","ohio","wisconsin")] <- "D5" 
us_state_map$division[us_state_map$region %in% c("arkansas","louisiana","new mexico","oklahoma","texas")] <- "D6" 
us_state_map$division[us_state_map$region %in% c("iowa","kansas","missouri","nebraska")] <- "D7" 
us_state_map$division[us_state_map$region %in% c("colorado","montana","north dakota","south dakota","utah","wyoming")] <- "D8" 
us_state_map$division[us_state_map$region %in% c("arizona","california","hawaii","nevada")] <- "D9" 
us_state_map$division[us_state_map$region %in% c("alaska","idaho","oregon","washington")] <- "D10" 

#create a dummy variable that counts the number of states in each division 
divisions.subtotal <- ddply(us_state_map, .(division), summarize, NumberOfStates=length(unique(region))) 

#merge our dummy data back into the map data table 
us_state_map.mod <- merge(x=us_state_map, y=divisions.subtotal, all.x=TRUE, by.x="division", by.y="division") 
us_state_map.mod = arrange(us_state_map.mod, order); 
us_state_map.mod$division = as.factor(us_state_map.mod$division) 

#plot a map of each division 
map <- ggplot() 
map = map + geom_polygon(data=us_state_map.mod, aes(x=long, y=lat, group=group, fill=division)) 
map 

#using these division boundaries, how do i plot the NumberOfStates variable for each Division 
+0

而不是通过修改形状文件,为什么不建立一个函数,它在数据帧中的销售地区而言,并吐出一个数据帧中的状态而言适合密谋?你可以用一个将状态链接到销售区域的数据框和一个简单的调用'merge'来解决这个问题。 –

+0

根据你的数据的样子,试试'rgeos :: gUnion'。 –

+0

谢谢你们对我指点正确的方向。我添加了一些代码,可以帮助解释我正在处理的内容。我不能告诉如果粘贴或不是,虽然所有的代码 - 它应该有一个呼叫结束到ggplot(),然后评论... – Matt

回答

2

不知道,如果你仍然需要一个答案或没有,但我会建议利用映射库:

map("usa") 

map("state",regions=c("connecticut", "maine", "massachusetts", 
    "new hampshire", "rhode island","vermont"),interior=F,boundary=T,add=T) 

然后使用col= specifications遮阳不同级别的每个区域。这有点乏味,但确实创造了这些地区。