Quarto中如何实现R生成图表与文本并排且标题对齐?
解决Quarto图书中图表、标题对齐及左侧文本填充问题
要实现图表右对齐、标题同步对齐且左侧填充文本的效果,最直接的方案是利用Quarto的多列布局,同时调整图表内部标题的对齐方式,具体步骤如下:
1. 用Quarto分栏布局实现左右排版
通过Quarto的列容器语法,将页面划分为左右两栏:左侧栏填充说明文本,右侧栏放置图表及对齐的图题。这种方式既能填满左侧空白,又能保证图表与图题完全对齐。
完整示例代码
::: {.columns} ::: {.column width="50%"} # 左侧文本内容 本直方图展示了样本群体的身高频率分布,数据覆盖59.5-74.5cm的区间范围,其中65.5-68.5cm区间的占比最高,达到42%。你可以在这里添加更多分析说明、数据背景或结论性内容,充分利用左侧的空白空间。 ::: ::: {.column width="50%"} ```r, echo=FALSE, fig.cap="Histogram of Height", out.width='100%', fig.asp=1 df <- data.frame( ClassInterval = c("59.5-62.5", "62.5-65.5", "65.5-68.5", "68.5-71.5", "71.5-74.5"), Frequency = c(5, 18, 42, 27, 8) ) # 调整绘图边距,避免标题被截断 par(mar = c(4, 4, 2, 1)) with(df, barplot(height = Frequency / sum(Frequency), names.arg = ClassInterval, space = 0, xlab = "Height", ylab = "Frequency", ylim = c(0, 0.45), cex.names=0.8, col = 'darkblue', density=20)) # 将图表内部标题设置为右对齐,匹配整体布局 title(main = "Histogram of Height", adj = 1) box(col = 'black')
:::
:::
## 2. 关键调整说明 - **分栏设置**:用`::: {.columns}`创建列容器,每栏宽度设为50%,刚好匹配你原图表的`out.width='50%'`设置。 - **图题对齐**:右侧栏内的图表宽度设为`100%`,Quarto会自动让`fig.cap`图题与图表保持同栏对齐,无需额外设置`fig.align='right'`。 - **图表内部标题对齐**:通过`title(main = "...", adj = 1)`将绘图窗口内的标题设置为右对齐,与整体排版风格统一。 - **边距调整**:用`par(mar = c(4,4,2,1))`调整绘图边距,避免右对齐的标题被截断。 ## 备选方案:仅调整图题对齐(无左侧文本) 如果不需要填充左侧文本,只是想让右对齐的图表与图题同步对齐,可通过自定义CSS实现: 在Quarto文档的YAML头部或单独的CSS文件中添加: ```css .figure.align-right figcaption { text-align: right; }
内容的提问来源于stack exchange,提问作者Saïd Maanan
相关产品推荐
相关产品推荐

