Я думаю, прежде всего, ваш DATA
объект должен быть data.frame
(из вашего кода я получаю список, который не принимается функцией ggplot()
).
Затем попытайтесь отобразить столбец HOVER
в эстетику text
в geom_map()
, а не в ggplot()
.
Кроме того, в вашем DATA
data.frame переименуйте столбец NUTS1
в id
, чтобы он совпадал с именем столбца id
из NUTS1
data.frame, полученного с помощью fortify
(вы видите, что это важно из примеров, найденных в help(geom_map)
).
library(ggplot2)
library(plotly)
library(rgdal)
DATA <- data.frame(id = c("UKC","UKD","UKE","UKF","UKG","UKH","UKI","UKJ","UKK","UKL","UKM","UKN"),
VAR1 = c("D","D","A","D","A","C","B","C","B","C","B","A"),
VAR2 = c("8","4","1","10","4","7","5","1","8","6","3","8"),
VAR3 = 1:12)
DATA$HOVER <- with(DATA, paste(id, "<br>", VAR1, "<br>", VAR2, "<br>", VAR3))
NUTS1 <- readOGR(dsn = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom",
layer = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom")
NUTS1 <- fortify(NUTS1, region = "nuts118cd")
p <- ggplot(data = DATA) +
geom_map(aes(map_id = id, fill = VAR1, text = HOVER), map = NUTS1) +
expand_limits(x = NUTS1$long, y = NUTS1$lat)
p2 <- ggplotly(p)
p2
![enter image description here](https://i.stack.imgur.com/dQ60h.png)
Обратите внимание, что интерактивные картысделать проще с пакетом mapview
.Для вашей конкретной проблемы, проверьте всплывающих окон mapview .Вот попытка с mapview
:
library(mapview)
library(rgdal)
NUTS1 <- readOGR(dsn = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom",
layer = "NUTS_Level_1_January_2018_Full_Clipped_Boundaries_in_the_United_Kingdom")
DATA <- data.frame(NUTS1 = c("UKC","UKD","UKE","UKF","UKG","UKH","UKI","UKJ","UKK","UKL","UKM","UKN"),
VAR1 = c("D","D","A","D","A","C","B","C","B","C","B","A"),
VAR2 = c("8","4","1","10","4","7","5","1","8","6","3","8"),
VAR3 = 1:12)
# merge DATA with the SpatialPolygonsDataFrame NUTS1
nuts <- merge(x = NUTS1, y = DATA, by.x = "nuts118cd", by.y = "NUTS1")
mapview(nuts, popup = popupTable(nuts, zcol = c("nuts118cd", "VAR1", "VAR2", "VAR3")))
![enter image description here](https://i.stack.imgur.com/6XVfY.png)
Чтобы заполнить VAR1
, вам нужно следовать этому примеру и звоните zcol = "VAR1"
в mapview
, например:
mapview(nuts, zcol = "VAR1",
popup = popupTable(nuts, zcol = c("nuts118cd", "VAR1", "VAR2", "VAR3")))