Добавление точек для представления городов на карте мира с помощью rworldmap

Я хочу создать карту мира с указанием конкретных стран, но, если возможно, я хотел бы также включить точки, представляющие определенные города в странах.

Я использую пакет rworldmap и экспериментирую с другими, но мне трудно понять, как определить конкретные местоположения города и где включить mapbubbles для точного определения.

Возможно, я мог бы добавить такую ​​строку, представляющую Сан-Диего, но я не знаю, куда она пойдет:

mapBubbles(dF="CEAMap", nameX = "-117.16", nameY = "32.71", nameZSize = "CEAMap",)

Я читал PDF-файл разработчика и, честно говоря, не могу понять, как реализовать пузыри карты и что в первую очередь должно содержать такие вещи, как nameZsize.

Я использовал это руководство, чтобы узнать, как выделить страны, но что касается точного определения городов, похоже, что я один, потому что я не могу понять PDF-файл разработчика. Как создать карту мира в R с указанием конкретных стран?

Вот мой полный код:

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))

Я бы хотел, чтобы отдельные пункты выделяли города в заполненных странах.


person NTJG    schedule 08.07.2019    source источник


Ответы (1)


Я бы хотел, чтобы отдельные пункты выделяли города в заполненных странах.

Тогда mapBubbles() - неправильная функция. Вы можете просто добавить points(), как в обычном R-графике.

Получите данные о местоположении городов до:

library(maps)

data("world.cities")

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

Не знаю, какие города вас интересуют, поэтому взял только столицы

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 тоже может быть лучшим выбором.

РЕДАКТИРОВАТЬ: Чтобы использовать указанные вами города, просто выберите соответственно:

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"))
person Humpelstielzchen    schedule 08.07.2019
comment
Привет, спасибо, что сообщили мне, что mapbubbles - неправильная функция. Хочу выделить города: Кельн, Ченнаи, Денвер, Мадрид, Манила, Сан-Диего, Сиэтл, Шанхай. Как я могу нанести их на карту в этом случае? Спасибо за помощь - person NTJG; 08.07.2019
comment
Если сюжет вам подходит, вам просто нужно выбрать города из world.cities. Я сделал обновление. - person Humpelstielzchen; 08.07.2019