我在下面提供了一个可重现的小示例。我想为命名 list 中的每个 ggplot 对象在四开中生成选项卡plots。下面的四开文档将在其自己的二级标题中呈现图形,但不会按预期呈现在选项卡中。
---
title: "Untitled"
format: html
---
```{r}
library(tidyverse)
data <- iris %>% as_tibble()
plots <- data %>%
group_nest(Species) %>%
deframe() %>%
map(., ~ {
ggplot(.x, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point()
})
```
# Iris Plots
::: {.panel-tabset}
```{r}
#| column: screen
#| fig-width: 12
#| fig-height: 8
#| fig-align: center
#| results: asis
iwalk(plots, ~ {
cat('## ', .y, '\n\n')
print(.x)
cat('\n\n')
})
```
:::
Run Code Online (Sandbox Code Playgroud)
当块选项(除 results:asis 之外的所有选项)被删除时,文档将按预期正确渲染选项卡内的绘图。
# Iris Plots
::: {.panel-tabset}
```{r}
#| results: asis
iwalk(plots, ~ {
cat('## ', .y, '\n\n')
print(.x)
cat('\n\n')
})
```
:::
Run Code Online (Sandbox Code Playgroud)
sha*_*fee 12
现在,如果您想生成扩展屏幕整个宽度的选项卡集,请用.panel-tabsetdiv 包裹 div .column-screen。
请注意,我们必须使用比div 更多的:for 。我们已经使用了三个for ,因此我们必须再使用四个 for来创建 div for 。.column-screen.panel-tabset:.panel-tabset:column-screen
---
title: "Panel tabs"
format: html
---
```{r}
library(tidyverse)
data <- iris %>% as_tibble()
plots <- data %>%
group_nest(Species) %>%
deframe() %>%
map(., ~ {
ggplot(.x, aes(x = Sepal.Length, y = Sepal.Width)) +
geom_point() +
theme_bw(
base_size = 18 # to increase the size of the plot elements
)
})
```
# Iris Plots
:::: {.column-screen}
::: {.panel-tabset}
```{r}
#| results: asis
#| fig-width: 14
#| fig-height: 6
iwalk(plots, ~ {
cat('## ', .y, '\n\n')
print(.x)
cat('\n\n')
})
```
:::
::::
Run Code Online (Sandbox Code Playgroud)
现在面板选项卡已扩展到屏幕宽度。
base_size = 18另请注意,我在绘图主题中增加了绘图元素的大小(例如 axis.title、axis.text 等) 。
如果您只是从块选项中删除column: screenand ,您的第一种方法就会起作用。fig-align: center
因为这两个块选项会阻止.panel-tabset正确创建用于渲染选项卡集的 div。
因此,在删除这两个块选项后,这将起作用(并且您不需要,fig-align: center因为选项卡集中的数字默认居中。
# Iris Plots
::: {.panel-tabset}
```{r}
#| fig-width: 12
#| fig-height: 8
#| results: asis
iwalk(plots, ~ {
cat('## ', .y, '\n\n')
print(.x)
cat('\n\n')
})
```
Run Code Online (Sandbox Code Playgroud)