ggvis add_tooltip 字符变量不呈现

ggvis add_tooltip character variables don't render

所以我正在制作约旦的交互式地图,以显示每个省的已登记叙利亚难民。添加的交互性非常简单;使用 add_tooltip,一旦您将鼠标悬停在一个省份上,它就会显示名称和难民总数。但是它不显示名称。当我在上面使用打印或格式时,它会显示 '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")

layer_paths 上,您按 group 对数据框进行分组,并使用总数的 fill,并且还在原始 ggvis 调用中选择了经度和纬度.因此,进入 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

因此,只需将 group 参数改为 name 而不是 group 似乎就可以了。见下方代码:

#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 列(根据您在 add_tooltip 中写入的 as.character(data$lat)) 判断)在这种情况下做

jor %>% ggvis(~long, ~lat) %>%
  layer_paths(data = jor %>% group_by(name), 
              strokeWidth := 0, fill = ~lat) %>%
  hide_axis("x") %>% hide_axis("y") %>%
  add_tooltip(function(data){paste("Gov: ", data$name, "<br>", "Total: ", as.character(data$lat))}, "hover")

无论如何都会工作。