如何用Quarto制作双图并排且底部带描述文本的PPT?解决跨页问题
解决Quarto PPT中描述文本跳转到下一页的问题
问题原因
使用layout-ncol:2的代码块生成两张并排图表时,图表会占满当前幻灯片的内容区域,Quarto会自动将后续的描述文本分配到新幻灯片中。
解决方案
通过Quarto的多列布局语法手动规划内容结构,确保图表和描述文本都在同一幻灯片内:
修改后的完整代码
--- title: "iris Presentation" format: pptx ---
```{r, include=FALSE} library(tidyverse) # 生成每个物种的直方图 spec_name <- unique(iris$Species) make_hist <- function(spec) { iris |> filter(Species == spec) |> ggplot(aes(x = Petal.Length)) + geom_histogram(bins = 10, fill = "steelblue", color = "white") + labs(title = paste("Petal Length Histogram -", spec)) } list_hist <- map(spec_name, make_hist) # 生成随机散点图 make_random_plot <- function() { tibble(x = rnorm(50), y = rnorm(50)) |> ggplot(aes(x, y)) + geom_point(color = "darkorange") + labs(title = "Random Scatter Plot") } list_random <- map(spec_name, ~ make_random_plot()) # 合并为数据框 df <- tibble(spec = spec_name, plot1 = list_hist, plot2 = list_random)
#| output: asis res <- pmap_chr(df, \(spec, plot1, plot2) { knitr::knit_child(text = c( paste0("## ", spec, " - Summary"), "::: {.layout}", "::: {.column width=50%}", "```{r}", "#| echo: false", "plot1", "```", ":::", "::: {.column width=50%}", "```{r}", "#| echo: false", "plot2", "```", ":::", ":::", "", paste("This slide shows the distribution of Petal Length for", spec, "alongside a comparison scatter plot of random values.") ), envir = environment(), quiet = TRUE) }) cat(res, sep = '\n')
### 关键调整说明 - 用`::: {.layout}`和`::: {.column width=50%}`替代代码块内的`layout-ncol:2`,手动控制两张图表的并排布局,避免图表占满整个幻灯片高度。 - 描述文本直接放在布局区块之后,会作为当前幻灯片的底部内容保留,不会被拆分到下一页。 内容的提问来源于stack exchange,提问作者Bachi Shashikadze
相关产品推荐
相关产品推荐

