2014-12-19 109 views
0

如何在美国单独绘制某些状态并标记它们?在R中绘制美国地图

目前我已经能够绘制使用此功能

library(maps) 
map("state",c('New York','massachusetts','Pennsylvania'),fill=TRUE,col="dark green",projection="polyconic") 

的国家,但我一直没能贴上标签。

+2

拼写正确的事情 – rawr 2014-12-19 07:03:21

+3

@Gughan这或许有助于'map.text( “状态”,C( '纽约', '马萨诸塞州',“宾夕法尼亚州),列= '黑'); map(“state”,c('New York','Massachusetts','Pennsylvania'),fill = TRUE,col ='dark green',add = TRUE); ('State',c('New York','Massachusetts','Pennsylvania'),col ='black',add = TRUE)' – akrun 2014-12-19 08:05:35

回答

0

您可以使用ggmap和ggplot2包在美国地图中绘制美国州。

library(ggmap) 
library(ggplot2) 
usaState<- data.frame(c("new york", "massachusetts", "pennsylvania")) 
colnames(usaState) <- "statename" 
LatLon <- c(apply(usaState, 1, geocode)) 
LatLonDF <- do.call(rbind.data.frame, LatLon) 
stateLatLonDF <- cbind(usaState, LatLonDF) 
myMap <- ggmap(get_map(location = 'united states', zoom = 4, source = 'google', maptype="terrain")) 
myMap <- myMap + geom_text(data = stateLatLonDF, aes(x = lon, y = lat, label = statename), size = 3, vjust = 0, hjust = -0.1, color = "red") 
print(myMap) 

缩放,文本参数等可以根据您的需要进行更改。希望这可以帮助。

+0

感谢它帮助。是否有可能我只能放大东海岸我的情节集中? – Gughan 2014-12-22 13:31:33

0

@Gughan在前面的代码片段中,我使用了get_map(location ='united states')来获取地图,它带来了美国的整个地图。要放大某个特定位置,get_map()的位置可以通过纬度和经度的平均值获得。通过控制get_map()中的缩放参数,并运行下面的代码,我得到东海岸放大。

library(ggmap) 
library(ggplot2) 
usaState<- data.frame(c("new york", "massachusetts", "pennsylvania")) 
colnames(usaState) <- "statename" 
LatLon <- c(apply(usaState, 1, geocode)) 
LatLonDF <- do.call(rbind.data.frame, LatLon) 
stateLatLonDF <- cbind(usaState, LatLonDF) 
map <- get_map(location = c(lon = mean(stateLatLonDF$lon), lat = mean(stateLatLonDF$lat)), color="color",source="google", maptype="terrain", zoom=7) 
ggmap(map) + geom_point(data = stateLatLonDF, aes(x = lon, y = lat, color = statename, alpha = 0.5, fill = "red"), size = 5, shape = 21) + geom_text(data = stateLatLonDF, aes(x = lon, y = lat, label = statename), size = 3, vjust = 0, hjust = -0.1, color = "blue") + scale_colour_discrete(name = "statename")