Open
Description
The following code based on the standard North Carolina shape-file fills counties by the values of BIR74
, except that one county has been given an NA
value for the variable.
library(ggplot2)
library(plotly)
library(sf)
nc_1 <-
st_read(system.file("shape/nc.shp", package = "sf"),
quiet = TRUE) %>%
mutate(BIR74 = ifelse(NAME == "Ashe", NA, BIR74)) %>%
mutate(tooltip_text = ifelse(is.na(BIR74),
paste0(NAME, " not reporting"),
paste0(NAME, " reports ", BIR74)))
p_1 <-
nc_1 %>%
ggplot() +
geom_sf(aes(fill = BIR74, text = tooltip_text))
ggplotly(p_1, tooltip = "text") %>%
style(hoveron = "fills")
The custom tooltip indicates the missing value (hover over Ashe County) as expected.
The following code sets BIR74
to NA
for two counties:
nc_2 <-
st_read(system.file("shape/nc.shp", package = "sf"),
quiet = TRUE) %>%
mutate(BIR74 = ifelse(NAME %in% c("Ashe", "Alleghany"), NA, BIR74)) %>%
mutate(tooltip_text = ifelse(is.na(BIR74),
paste0(NAME, " not reporting"),
paste0(NAME, " reports ", BIR74)))
p_2 <-
nc_2 %>%
ggplot() +
geom_sf(aes(fill = BIR74, text = tooltip_text))
ggplotly(p_2, tooltip = "text") %>%
style(hoveron = "fills")
Hover over either Ashe or Alleghany and you get identical very long tooltips.
The output of plotly_json(p_2)
indicates that Ashe and Alleghany have somehow been combined. See, e.g.:
json_2 <- plotly_json(p_2)
json_2$x$data %>%
as.character() %>%
RJSONIO::fromJSON() %>%
.$data %>%
.[[100]] %>%
.[1:3]