【问题标题】:ggvis add_tooltip character variables don't renderggvis add_tooltip 字符变量不呈现
【发布时间】:2015-10-26 22:35:42
【问题描述】:

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

【问题讨论】:

    标签: r ggvis choroplethr


    【解决方案1】:

    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
    

    因此,只需将 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")
    

    无论如何都会工作。

    【讨论】:

    • 哦,请注意您几分钟前就在那里。 +1
    • @StevenBeaupré 不用担心,2 分钟是不够的时间来不发布答案,因为无论如何你都会发布它。这不是抄袭或任何东西:)
    • @LyzanderR 非常感谢!很抱歉错过了总数,但我想现在是凌晨 2 点,我在连续修改代码 4 小时后发布了这个。
    • @cad86 不客气,很高兴我能帮上忙(不用担心总数,反正很容易复制 :))!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多