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

Chart JS能否设置多个标题?或实现顶部标题+底部描述?

好问题!Chart.js 原生的 title 配置确实只支持单个标题,但有几种简单的方案能帮你实现「顶部主标题+底部描述」的效果,我给你整理两个最实用的:

方案1:用HTML元素搭配(最简单易维护)

这种方式不需要修改Chart.js的复杂配置,直接用HTML在画布上下方分别添加标题和描述,样式也更容易自定义:

<!-- 包裹图表的容器 -->
<div class="chart-wrapper">
  <h3 class="chart-main-title">我的顶部主标题</h3>
  <canvas id="myChart"></canvas>
  <p class="chart-desc">这是底部的描述文本,用来补充图表说明</p>
</div>

添加一点CSS让布局更协调:

.chart-wrapper {
  width: 70%;
  margin: 2rem auto;
  text-align: center;
}
.chart-main-title {
  margin: 0 0 1rem 0;
  color: #2d3748;
}
.chart-desc {
  margin: 1rem 0 0 0;
  color: #718096;
  font-size: 0.9rem;
}

你的Chart.js配置可以简化,不需要再处理title的位置:

var chart = new Chart(ctx, {
  type: 'line',
  data: data,
  options: {
    // 这里可以去掉title配置,或者保留也不影响
  }
});

方案2:自定义Chart.js插件(在画布内实现双标题)

如果你希望标题和描述都显示在图表画布内部(比如导出图片时能包含进去),可以用Chart.js的自定义插件来添加第二个标题:

var chart = new Chart(ctx, {
  type: 'line',
  data: data,
  options: {
    // 用原生title做底部描述
    title: {
      display: true,
      text: '底部描述文本:这是图表的详细说明',
      position: 'bottom',
      font: {
        size: 12,
        style: 'italic'
      },
      color: '#718096'
    },
    // 自定义插件的配置项
    plugins: {
      topTitle: {
        text: '顶部主标题',
        font: {
          size: 16,
          weight: 'bold'
        },
        color: '#2d3748'
      }
    }
  },
  // 注册自定义插件
  plugins: [{
    id: 'topTitle',
    beforeDraw: (chart) => {
      const ctx = chart.ctx;
      const config = chart.options.plugins.topTitle;
      if (!config?.text) return;

      // 计算标题的位置(水平居中,距离顶部20px)
      const chartArea = chart.chartArea;
      const titleX = chartArea.left + (chartArea.right - chartArea.left) / 2;
      const titleY = chart.top + 20;

      // 设置文本样式
      ctx.font = `${config.font.weight || 'normal'} ${config.font.size}px ${config.font.family || 'sans-serif'}`;
      ctx.fillStyle = config.color || '#333';
      ctx.textAlign = 'center';
      ctx.textBaseline = 'top';

      // 绘制顶部标题
      ctx.fillText(config.text, titleX, titleY);
    }
  }]
});

这个插件会在图表绘制前,在画布顶部居中位置添加你设置的主标题,同时原生的title负责底部的描述,完全满足你的需求。

小提示

  • 如果只需要简单的文本补充,优先选方案1,开发和维护成本都更低;
  • 如果需要导出带标题的图表图片,方案2更合适,因为插件绘制的内容会包含在画布内。

内容的提问来源于stack exchange,提问作者Jens Törnell

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 10:03:14