Символьные переменные 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")

все равно будет работать.

Другие вопросы по тегам