首页 > 解决方案 > 如何在 Chart.Js 中更改条形图工具提示的位置

问题描述

默认情况下,Chart.js 将在条形图的条形顶部显示工具提示。我正在尝试将工具提示的默认位置从顶部更改为栏的中心。

这类似于下图所示。

感谢您对此的帮助,谢谢。

在此处输入图像描述

标签: chart.jschart.js2

解决方案


您需要定义一个新的工具提示位置模式,如下所示:

Chart.Tooltip.positioners.middle = elements => {
  let model = elements[0]._model;
  return {
    x: model.x,
    y: (model.base + model.y) / 2
  };
};

此外,您必须tooltips在图表中定义options如下:

tooltips: {
  position: 'middle',  // must match the positioner function name defined above
  yAlign: null,        // to get rid of the pointer
  xAlign: 'center'
}

请看下面的可运行代码片段,看看它是如何工作的:

Chart.Tooltip.positioners.middle = elements => {
  let model = elements[0]._model;
  return {
    x: model.x,
    y: (model.base + model.y) / 2
  };
};

new Chart(document.getElementById("chart"), {
  type: "bar",
  data: {
    labels: ["January", "February", "March", "April", "May", "June", "July"],
    datasets: [{
      label: "My Dataset",
      data: [65, 59, 80, 81, 56, 55, 40],
      backgroundColor: ["rgba(255, 99, 132, 0.2)", "rgba(255, 159, 64, 0.2)", "rgba(255, 205, 86, 0.2)", "rgba(75, 192, 192, 0.2)", "rgba(54, 162, 235, 0.2)", "rgba(153, 102, 255, 0.2)", "rgba(201, 203, 207, 0.2)"],
      borderColor: ["rgb(255, 99, 132)", "rgb(255, 159, 64)", "rgb(255, 205, 86)", "rgb(75, 192, 192)", "rgb(54, 162, 235)", "rgb(153, 102, 255)", "rgb(201, 203, 207)"],
      borderWidth: 1
    }]
  },
  options: {
    tooltips: {
      position: 'middle',  
      yAlign: null,
      xAlign: 'center'
    },
    legend: {
      display: false
    },
    scales: {
      yAxes: [{
        ticks: {
          beginAtZero: true
        }
      }]
    }
  }
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.9.4/Chart.min.js"></script>
<canvas id="chart" height="90"></canvas>

如果工具提示未以嵌入模式显示,则以整页模式显示结果图表。


推荐阅读