簡體   English   中英

將 fig.width 傳入 taglist

[英]Passing fig.width into a taglist

rgl小部件響應 knitr 代碼塊選項中指定的圖形寬度和高度,例如

```{r fig.width=2, fig.height=2}
library(rgl); example(plot3d);
rglwidget()
```

給出了一個小圖(在我的屏幕上為 192 x 192)。 但是,如果我將rglwidget()放在可瀏覽的 tagList 中,則不會:

```{r fig.width=2, fig.height=2}
library(rgl); example(plot3d)
library(htmltools)
browsable(tagList(rglwidget(), rglwidget()))
```

這提供了兩個全尺寸小部件。 調試 Javascript 顯示每個初始化為 960 x 500,而不是第一個示例中的 192 x 192。

有沒有辦法說我希望將寬度和高度值傳遞到 tagList 中的小部件?

PS 這與rgl leaflet有同樣的問題

```{r fig.width=2, fig.height=2}
library(leaflet); library(htmltools)
browsable(tagList(leaflet() %>% addTiles())
```

由於塊中的代碼可以讀取塊的選項,因此這里最好的解決方案可能是編寫小函數來獲取以像素為單位的圖形大小,並在小部件的顯式設置中使用這些函數。

例如,

```{r fig.width=2, fig.height=2}
library(leaflet); library(htmltools)

# This one is too big:
browsable(tagList(leaflet() %>% addTiles()))

# Get the current figure size in pixels:
w <- function() 
  with(knitr::opts_current$get(c("fig.width", "dpi", "fig.retina")),
       fig.width*dpi/fig.retina)
h <- function() 
  with(knitr::opts_current$get(c("fig.height", "dpi", "fig.retina")),
       fig.height*dpi/fig.retina)

# This is what I wanted:
browsable(tagList(leaflet(width = w(), height = h()) %>% addTiles()))
```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM