ggvis add_tooltip字符变量不呈现

时间:2015-10-26 22:35:42

标签: r ggvis choroplethr

所以我正在制作约旦的互动地图,以显示每个省的登记叙利亚难民。添加的交互性非常简单;使用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")

1 个答案:

答案 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")

enter image description here

实际上,我认为总列实际上是您案例中的lat列(来自您as.character(data$lat))的{​​{1}}的判断),在这种情况下执行

add_tooltip

无论如何都会有用。