R - печатать названия отдельных стран на карте, используя rworldmap - PullRequest
3 голосов
/ 17 июня 2019

Я создаю тепловую карту, используя карту Европы в пакете rworldmap в R (поскольку я не знаю, как это сделать с помощью ggmap или ggplot2).

Мне нужно нанести на график названия стран, которые присутствуют только в моем кадре данных, а не все европейские страны. Как я могу это сделать? Мой код:

library(RColorBrewer)
#getting colours
colourPalette <- brewer.pal(5,'RdPu')


library(rworldmap)

europe <- data.frame(
  "country" = c("Greece", 
                "France", 
                "Spain",
                "Italy",
                "UK",
                "Finland","Norway","Sweden",
                "Germany",
                "Romania"), 
  "x" = c(2.5, 3, 2.2, 1.8,2.32, 1.99, 2.01, 2.34, 1.88, 2.45))

matched <- joinCountryData2Map(europe, joinCode="NAME", nameJoinColumn="country")





mapParams <- mapCountryData(matched, 
                            nameColumnToPlot="x", 
                            mapTitle="my Titley", 
                            addLegend=FALSE,
                            mapRegion="Europe"
                            ,colourPalette=colourPalette,
                            oceanCol="#404040", missingCountryCol="#A0A0A0")



#adding legend
do.call(addMapLegend
        ,c(mapParams
           ,legendLabels="all"
           ,legendWidth=0.5
           ,legendIntervals="data"
           ,legendMar = 2))

labelCountries()

При использовании labelCountries() печатаются все названия стран, и они не читаются.

Спасибо

1 Ответ

2 голосов
/ 17 июня 2019

С небольшой помощью этот предыдущий ответ:

# get the coordinates for each country
country_coord<-data.frame(coordinates(matched),stringsAsFactors=F)

# label the countries
country = c("Greece", 
              "France", 
              "Spain",
              "Italy",
              "UK",
              "Finland","Norway","Sweden",
              "Germany",
              "Romania")

#filter your wanted countrys
country_coord = country_coord[country,]

#insert your labels in plot
text(x=country_coord$X1,y=country_coord$X2,labels=row.names(country_coord))

вы можете добавить метки страны с помощью text, но вы должны извлечь координаты перед вашими согласованными координатами. Выход:

plot

Вы можете немного поиграть с col = "color" в text, поскольку некоторые страны едва читаются. Или, может быть, изменить цветовую гамму на вашей карте

...