【发布时间】:2021-01-23 11:51:49
【问题描述】:
我正在绘制如下欧洲地图:
library(ggplot2)
library(grid)
library(rworldmap)
## Get the world map: ##
worldMap <- getMap()
## Define vector with all European countries: ##
v.europe <- c("Norway", "Sweden", "Finland", "Denmark", "United Kingdom","Ireland", "Greece",
"Belgium", "Netherlands", "France", "Spain", "Portugal", "Luxembourg", "Croatia",
"Germany", "Switzerland", "Austria", "Slovenia", "Italy", "Bulgaria", "Romania",
"Czech Rep.", "Slovakia", "Hungary", "Poland", "Bosnia Hercegovina", "Serbia",
"Turkey", "Ukraine", "Moldova", "Belarus", "Estonia", "Latvia", "Lithuania",
"Montenegro", "Albania", "Macedonia")
## Select only the index of countries of Europe: ##
indEU <- which(worldMap$NAME%in%v.europe)
## Extract longitude and latitude border's coordinates of countries: ##
df.europeCoords <- lapply(indEU, function(i){
df <- data.frame(worldMap@polygons[[i]]@Polygons[[1]]@coords)
df$region = as.character(worldMap$NAME[i])
colnames(df) <- list("long", "lat", "region")
return(df)
})
df.europeCoords <- do.call("rbind", df.europeCoords)
names(df.europeCoords) <- c("longitude", "latitude", "country")
## Deletes/Removes borders of PLOT: ##
ax <- list(
title = "",
zeroline = FALSE,
showline = FALSE,
showticklabels = FALSE,
showgrid = FALSE
)
## Plot the map: ##
p <- ggplot(data = df.europeCoords, aes(x = longitude, y = latitude, group = country,
text = paste("<b>", country, '</b>\n')),
color = "grey50", size = 0.1) +
geom_polygon() +
coord_map(xlim = c(-13, 35), ylim = c(32, 71)) +
theme_classic() +
theme(axis.text.x = element_blank(), axis.text.y = element_blank(), axis.ticks.x = element_blank(),
axis.ticks.y = element_blank(), axis.title = element_blank(), legend.position = "none",
plot.margin = unit(0 * c(-1.5, -1.5, -1.5, -1.5), "lines"))
## Create plot_ly() object: ##
EuropePlot <- plotly::ggplotly(p, tooltip = "text") %>%
layout(xaxis = ax, yaxis = ax)
这给出了以下情节:
我想在一组国家周围画一个红色边框。该组应包括以下国家:奥地利、德国、丹麦、比利时、法国和瑞士。我该怎么做?
【问题讨论】: