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

静态RMarkdown flexdashboard中billboarder图表图例无法正常加载问题

问题原因

flexdashboard的标签页组件默认会将非激活的标签内容设置为隐藏状态,billboarder图表初始化时无法获取隐藏容器的宽高参数,就会出现图例计算错误、显示异常的问题,只有默认展示的首屏内容里的图表可以正常渲染。

解决方法

方案1:添加重绘回调(推荐,不改变原有布局)

加载htmlwidgets包,给billboarder图表添加激活标签页时的重绘逻辑即可,修正后的完整代码如下:

---
title: "Untitled"
output: 
  flexdashboard::flex_dashboard:
    orientation: columns
    vertical_layout: fill
---

```{r setup, include=FALSE}
library(flexdashboard)
library(billboarder)
library(data.table)
library(htmlwidgets)

Column {.tabset}

Dummy tab

Chart A

billboarder() %>%
  bb_linechart(melt(data.table(rock, keep.rownames = TRUE)[, area := as.numeric(area)], id.vars = "rn", measure.vars = c("area", "peri")), bbaes(rn, value, variable)) %>% 
  onRender("
    function(el, x) {
      document.querySelectorAll('a[data-toggle=\"tab\"]').forEach(function(tab) {
        tab.addEventListener('shown.bs.tab', function(e) {
          if (e.target.getAttribute('href') == '#' + el.closest('.tab-pane').id) {
            el.billboard.resize();
          }
        })
      })
    }
  ")
### 方案2:修改布局模式
如果你不需要固定高度的填充布局,把输出参数里的`vertical_layout: fill`改成`vertical_layout: scroll`,也可以规避这个渲染冲突问题。

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

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

最近更新时间:2026.10.06 12:57:02