将 fig.width 传递到标签列表中
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 中的小部件?
P.S。这与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()))
```
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 中的小部件?
P.S。这与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()))
```