所以我正在制作约旦的互动地图,以显示每个省的登记叙利亚难民。添加的交互性非常简单;使用add_tooltip,一旦你将鼠标悬停在省份上,它就会显示难民的名字和总人数。但它没有显示名称。当我在其上使用print或format时,它会显示'NULL'。可能是什么原因?
可以在下面找到可重现的代码:
library(choroplethrAdmin1)
library(choroplethr)
library(ggvis)
library(dplyr)
jor<-get_admin1_map("jordan")
jor %>% ggvis(~long, ~lat) %>%
layer_paths(data = jor %>% group_by(group),
strokeWidth := 0, fill = ~total) %>%
hide_axis("x") %>% hide_axis("y") %>%
add_tooltip(function(data){paste("Gov: ", data$name, "<br>", "Total: ", as.character(data$lat))}, "hover")
答案 0 :(得分:2)
在layer_paths
上,您按group
对数据框进行分组,然后使用总数的fill
,并在原始ggvis
来电中选择long和lat。因此,add_tooltip
中的数据框恰好包含那些列,即没有name
列。
快速检查显示每个组只对应一个名称,如下所示:
> table(jor$group, jor$name)
ajlun amman aqaba balqa irbid jarash karak ma`an madaba mafraq tafilah zarqa
2009.1 0 0 87 0 0 0 0 0 0 0 0 0
2010.1 0 0 0 0 0 0 0 0 0 115 0 0
2011.1 0 102 0 0 0 0 0 0 0 0 0 0
2012.1 0 0 0 0 0 0 0 0 0 0 67 0
2013.1 0 0 0 0 0 0 0 70 0 0 0 0
2014.1 0 0 0 0 159 0 0 0 0 0 0 0
2015.1 41 0 0 0 0 0 0 0 0 0 0 0
2016.1 0 0 0 0 0 42 0 0 0 0 0 0
2017.1 0 0 0 80 0 0 0 0 0 0 0 0
2018.1 0 0 0 0 0 0 0 0 60 0 0 0
2019.1 0 0 0 0 0 0 74 0 0 0 0 0
2020.1 0 0 0 0 0 0 0 0 0 0 0 86
因此,只需将组参数更改为name
而不是组,这似乎有效。见下面的代码:
#I have added a fake total column
jor$total <- runif(983) * 100
并且此代码有效:
jor %>% ggvis(~long, ~lat) %>%
layer_paths(data = jor %>% group_by(name),
strokeWidth := 0, fill = ~total) %>%
hide_axis("x") %>% hide_axis("y") %>%
add_tooltip(function(data){paste("Gov: ", data$name, "<br>", "Total: ", as.character(data$lat))}, "hover")
实际上,我认为总列实际上是您案例中的lat
列(来自您as.character(data$lat))
的{{1}}的判断),在这种情况下执行
add_tooltip
无论如何都会有用。