如何在 htmlwidgets R 中使用 saveWidget 调整 HTML 小部件的大小(重新打开的问题)?

How to resize HTML widget using saveWidget in htmlwidgets R (reopened question)?

我想重新打开之前关于 Whosebug 的一个主题,涉及我今天遇到的一个问题,我按照 matheuscburger 描述的相同方式修复了这个问题,方法是更改小部件的大小。

R 的导出操作中,是否有关于使用库 htmlwidgets 中的 saveWidget 更改 HTML 小部件大小的可能性的新选项?

示例代码如下:

library(ggplot2)
library(ggiraph)
library(patchwork)
library(cowplot)

mtcars <- mtcars
mtcars$tooltip <- rownames(mtcars)

gg1 <- ggplot(mtcars) +
  geom_point_interactive(aes(x = drat, y = wt, color = qsec, 
    tooltip = tooltip, data_id = tooltip ), size = 4) 

gg2 <- ggplot(mtcars) +
  geom_point_interactive(aes(x = qsec, y = disp, color = mpg, 
    tooltip = tooltip, data_id = tooltip ), size = 4)



oggetto <- girafe( ggobj = plot_grid(gg1, gg2), width_svg = 8, height_svg = 4)
oggetto

导出代码如下:

library(htmlwidgets)
saveWidget(oggetto, file= "Grafico.html", selfcontained = TRUE, libdir = "libs", knitrOptions = list(width = 1200, height = 500))

使用 knitrOptions = list(width = 1200, height = 500) 无法定义尺寸。

我不知道如何在保存时执行此操作,但您绝对可以在创建小部件时或在保存之前随时执行此操作。

HTML 小部件中内置了几种默认大小调整机制。

您可以在此处使用像素、磅、百分比等设置大小。您可以在创建小部件后更改这些:

oggetto[["sizingPolicy"]][["defaultWidth"]] <- "50%"

或者,您可以在渲染时指定一个新的尺寸来呈现它自己。我在这里使用了百分比,但您可以使用任何 HTML/CSS 接受的大小调整机制。但是,我建议您使用动态调整大小,因为它是 HTML(即百分比、em、rem 等)。

oggetto <- girafe(ggobj = plot_grid(gg1, gg2), 
                  width_svg = 8, height_svg = 4) %>% 
  onRender("
           function(el) {
             el.setAttribute('style', 'height: 50%; width: 50%;');
           }")