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