You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RMarkdown循环中单独设置Plotly图表尺寸(无需knitr块选项)

在RMarkdown循环中控制单个Plotly图表尺寸

有两种实用方法可以解决循环内单独设置Plotly图表尺寸的问题:

方法1:通过Plotly原生的layout()设置尺寸

直接在生成图表后调用layout()函数,指定width和height参数,这是Plotly自身的配置方式,能精准控制图表本身的渲染尺寸:

```{r, include=TRUE, echo=FALSE, results = 'asis'}
library(plotly)
library(htmltools)

for (i in 1:3) {
  cat("\n# 标题1 \n\n")
  p <- plot_ly(data.frame(x = 1:10, y = rnorm(10)), x = ~x, y = ~y, type = 'scatter', mode = 'markers') %>%
    layout(width = '100%', height = 200)  # 自定义散点图尺寸
  print(tagList(p))
  
  cat("\n# 标题2 \n\n")
  p <- plot_ly(data.frame(x = c('A', 'B', 'C'), y = runif(3)), x = ~x, y = ~y, type = 'bar') %>%
    layout(width = '50%', height = 100)  # 自定义条形图尺寸
  print(tagList(p))
}
## 方法2:用`htmltools::div()`包裹图表设置样式
如果需要更灵活的HTML层面控制(比如添加边距、对齐方式等),可以用`div()`给图表套一个容器,通过`style`属性指定宽高:

```r
```{r, include=TRUE, echo=FALSE, results = 'asis'}
library(plotly)
library(htmltools)

for (i in 1:3) {
  cat("\n# 标题1 \n\n")
  p <- plot_ly(data.frame(x = 1:10, y = rnorm(10)), x = ~x, y = ~y, type = 'scatter', mode = 'markers')
  # 用div容器控制尺寸
  print(div(p, style = "width: 100%; height: 200px;"))
  
  cat("\n# 标题2 \n\n")
  p <- plot_ly(data.frame(x = c('A', 'B', 'C'), y = runif(3)), x = ~x, y = ~y, type = 'bar')
  print(div(p, style = "width: 50%; height: 100px;"))
}
### 注意事项
- 优先推荐方法1,因为它直接控制Plotly图表的核心渲染尺寸,能避免容器与图表尺寸不匹配的问题。
- 如果输出格式为PDF,`layout()`中的百分比宽度建议替换为固定像素值,PDF对百分比单位的支持有限。

内容的提问来源于stack exchange,提问作者Comfort Eagle
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 14:07:17