Символьные переменные ggvis add_tooltip не отображаются
Поэтому я работаю над интерактивной картой Иордании, чтобы отображать зарегистрированных сирийских беженцев по мухафазам. Добавленная интерактивность довольно проста; используя 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 ответ
На 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
Поэтому просто изменив аргумент группы на 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))
что ты пишешь в add_tooltip
в каком случае делать
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")
все равно будет работать.