如何在 ggiraph 的工具提示中插入 R(交互式或非交互式)图形?

How to to insert R (interactive or not) graphics in the tooltips of a ggiraph?

我最终想在 ggiraph 的工具提示中插入 R(交互式或非交互式)图形。 使用 iframe 就像我之前成功使用传单一样,它看起来像这样:

library(ggplot2)
library(ggiraph)
library(htmltools)

p <- {ggplot() + 
  aes(1,1, tooltip = "blabla") +
  geom_point_interactive()} %>% 
  girafe(ggobj = .)

save_html(p, file = "test.html") # I would use a loop to save many different graphs at the same time

{ggplot() + 
    aes(1,1, tooltip = HTML("<iframe src='test.html' frameborder=0 width=300 height=300></iframe>")) +
    geom_point_interactive()} %>% 
  girafe(ggobj = .)

不幸的是,我遇到了一些错误。让我们试试:

{ggplot() + 
    aes(1,1, tooltip = HTML("<iframe src='https://whosebug.com' frameborder=0 width=300 height=300></iframe>")) +
    geom_point_interactive()} %>% 
  girafe(ggobj = .)

在 Firefox 中,它只给出一个黑色方块,而在 RStudio IDE 中,它意外地在鼠标悬停时在浏览器中打开该站点。 black square tooltip

所以我有两个问题:

  1. 首先,您需要先检查您的 iframe 是否正常工作,然后才能在不检查 iframe 代码有效性的 ggiraph 中使用它。你展示的例子对我不起作用,我得到一个黑屏,你可以通过使用 ggiraph 得到。例如,我使用的是 ggiraph cran 页面。

  2. RStudio 查看器似乎不支持 iframe,因此请确保您在现代浏览器(chrome、ff、safari、...)中查看结果

  3. 您可以使用htmltools::HTML(),但这不是强制性的。

library(ggplot2)
library(ggiraph)

pp <- ggplot() + 
    aes(1,1, tooltip = "<iframe src='https://cran.r-project.org/package=ggiraph'></iframe>") +
    geom_point_interactive()
girafe(ggobj = pp)