首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用rworldmap添加点以表示世界地图上的城市

使用rworldmap添加点以表示世界地图上的城市
EN

Stack Overflow用户
提问于 2019-07-08 03:13:40
回答 1查看 924关注 0票数 2

我想做一个世界地图与特定的国家填写,但如果可能的话,我也想包括具体的城市代表国家的精确点。

我一直在使用rworldmap包,并与其他人进行了实验,但我很难理解如何定位特定的城市位置,以及如何将mapbubbles包含在其中。

也许我可以加上这样的一行,代表圣迭戈,但我不知道它会去哪里:

代码语言:javascript
复制
mapBubbles(dF="CEAMap", nameX = "-117.16", nameY = "32.71", nameZSize = "CEAMap",)

我一直在阅读开发人员的PDF文档,老实说,我不能真正理解如何实现地图泡泡,以及像nameZsize这样的东西最初应该包含哪些内容。

我用这个指南来学习如何突出这些国家,但就精确定位城市而言,我似乎只能靠自己,因为我无法真正理解开发人员的PDF。How to create a world map in R with specific countries filled in?

到目前为止,这是我的完整代码:

代码语言:javascript
复制
library(rworldmap)
library(ggmap)
library(maptools)
library(maps)

theCountries <- c("USA", 
                  "CAN", "DEU", "FRA", "IND", 
                  "GBR", "NLD", "ITA", 
                  "CHN", "KOR", "JPN", 
                  "ESP", "PRT", "RUS", 
                  "NOR", "SGP", "AUS", 
                  "CHL", "MEX", "PHL", "RWA", 
                  "JOR", "HND", "PAN", "THA", "DOM", 
                  "ZAF", "TUR", "CHE", "FIN",
                  "SEN", "BOL", "OMN", "PAK", "CMR", "MUS", "BEL", "MYS", 
                  "UAE", "BRA", "MLI", "MOZ", "NAM", "EGY", "ARG", "UKR", "ZMB", "KEN",
                  "VNM", "NGA", "DNK", "IRN", "AFG")
# These are the ISO3 names of the countries you'd like to plot in red

CEAMap <- data.frame(country = c("USA", 
                                 "CAN", "DEU", "FRA", "IND", 
                                 "GBR", "NLD", "ITA", 
                                 "CHN", "KOR", "JPN", 
                                 "ESP", "PRT", "RUS", 
                                 "NOR", "SGP", "AUS", 
                                 "CHL", "MEX", "PHL", "RWA", 
                                 "JOR", "HND", "PAN", "THA", "DOM", 
                                 "ZAF", "TUR", "CHE", "FIN",
                                 "SEN", "BOL", "OMN", "PAK", "CMR", "MUS", "BEL", "MYS", 
                                 "UAE", "BRA", "MLI", "MOZ", "NAM", "EGY", "ARG", "UKR", "ZMB", "KEN",
                                 "VNM", "NGA", "DNK", "IRN", "AFG"),
                      involvement = c(1, 
                                    2, 2, 2, 2, 
                                    3, 3, 3, 
                                    4, 4, 4, 
                                    5, 5, 5, 
                                    6, 6, 6, 
                                    7, 7, 7, 7,
                                    8, 8, 8, 8, 8,
                                    9, 9, 9, 9,
                                    10, 10, 10, 10, 10, 10, 10, 10, 
                                    11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 
                                    12, 12, 12, 12, 12))

# CEAMap is a data.frame with the ISO3 country names plus a variable to
# merge to the map data

CEAcountries <- joinCountryData2Map(CEAMap, joinCode = "ISO3",
                              nameJoinColumn = "country")


# This will join your CEAMap data.frame to the country map data

mapCountryData(CEAcountries, nameColumnToPlot="country", 
               catMethod = "categorical",
               mapTitle='CEA Locations',
               missingCountryCol = gray(.8))

我希望有一些具体的要点,突出城市的填充在国家。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-08 07:15:41

我希望有一些具体的要点,突出城市的填充在国家。

那么mapBubbles()是错误的函数。您可以像普通的R-图中那样添加points()

获取城市之前的位置数据:

代码语言:javascript
复制
library(maps)

data("world.cities")

plotcities <- subset(world.cities, capital == 1)

我不知道你对哪些城市感兴趣,所以我只选择了首都

代码语言:javascript
复制
mapCountryData(CEAcountries, nameColumnToPlot="country", 
               catMethod = "categorical",
               mapTitle='CEA Locations',
               missingCountryCol = gray(.8), addLegend = FALSE)
points(plotcities$long, plotcities$lat, pch =  18, col = "black")

不过,我建议您看看像tmap这样的包。他们制作的地图要好得多。ggplot2也可能是一个更好的选择。

编辑:使用您提供的城市,只需相应地选择:

代码语言:javascript
复制
plotcities <- subset(world.cities, 
                     name %in% c("Cologne", "Chennai", "Denver", "Madrid", "Manila", "San Diego", "Seattle", "Shanghai")
                     & country.etc %in% c("Germany", "USA", "Spain", "China", "Philippines", "India"))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56927983

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档