0

我有瑞典一些城市的数据,但不是全部。我想在地图上绘制这些数据,工具提示在悬停时指示确切的值和自治市的名称。

下面的代码可以做到这一点,但存在一个严重的问题——当您将鼠标悬停在数据为 NA 的市政当局上时,每个缺少数据的市政当局都会以橙色突出显示,而不仅仅是悬停的城市。如果您不想在自己的机器上运行,您可以在此处查看以下代码的结果。

library(ggiraph)
library(ggplot2)
# devtools::install_github('reinholdsson/swemaps')
library(swemaps)
# Map data now in: map_kn

# For all municipalities except three, our data is missing:
allMunicipalities <- levels(map_kn$knnamn)
dat <- data.frame(knnamn = allMunicipalities, PlotVar = NA, ttip = NA)
dat$PlotVar[45] <- 8.3
dat$ttip[45] <- "Finspång: 8.3"
dat$PlotVar[32] <- 7.2
dat$ttip[32] <- "Eda: 7.2"
dat$PlotVar[103] <- 11.9
dat$ttip[103] <- "Klippan: 11.9"

# Join our values to plot with the frame containing the map data:
plotData <- left_join(map_kn, dat, by="knnamn")

# Draw the map:
p <- ggplot(plotData, aes(ggplot_long, ggplot_lat)) + 
  geom_polygon_interactive(aes(fill = PlotVar, group = knkod, 
                               tooltip = ttip, data_id = PlotVar, onclick = PlotVar)) + 
  coord_equal()

# Have a look at it:
girafe(ggobj = p)

理想情况下,我们没有数据的自治市将是完全惰性的,当将它们悬停时不会发生任何事情,但我可以只用一个工具提示突出显示一个自治市,表明没有数据,如果理想版本不是可能的。

编辑:更多的反复试验表明,实际上任何两个具有相同值的城市,无论是 NA 还是其他值,总是会一起突出显示。所以多边形的绘制方式似乎有些问题?

4

0 回答 0