正如标题所解释的,我试图使用chart.js创建一个报告,以给用户一个他们在系统中搜索的数据的图形表示,我目前能够让数据显示在画布上.

我已经从系统后端以JSON格式提供给JS函数的数据.我有主要的数据,正在构建饼图,与其他数据需要添加到工具提示,以给出关于该数据点的进一步解释.

我该如何go 做这一点,因为网上寻找没有给任何可行的结果,已经工作?

我附上了一个简化版本的代码与数据显示它是如何在系统中产生的.

var ctx = document.getElementById('myChart').getContext('2d');

var data = {
  title: "Booking duration between 01/08/2023 and 29/03/2024",
  labels: ["0 - 6 days", "7 - 13 days", "14 - 20 days", "21 - 27 days", "28 - 34 days"],
  datasets: [{
    data: [2126, 430, 51, 20, 44],
    backgroundColor: ["#82B6EB", "#434348", "#94EE7E", "#F3A15E", "#8385E8"],
    datalabels: ["79.6 %", "16.1 %", "1.91 %", "0.75 %", "1.65 %"],
    databooking: ["( 2126 bookings)", "( 430 bookings)", "( 51 bookings)", "( 20 bookings)", "( 44 bookings)"],
    hoverOffset: 20
  }]
};

var myChart = new Chart(ctx, {
  type: 'pie',
  data: data,
  options: {
    tooltips: {
      callbacks: {
        label: function(tooltipItem, chartData) {
          var dataset = chartData.datasets[tooltipItem.datasetIndex];
          var currentValue = dataset.data[tooltipItem.index];
          var dataLabel = dataset.datalabels[tooltipItem.index];
          var dataBooking = dataset.databooking[tooltipItem.index];
          return 'Value: ' + currentValue + ' ' + dataLabel + ' ' + dataBooking;
        },
        title: function(tooltipItems, data) {
          return data.title;
        }
      }
    }
  }
});
<script type="text/javascript" src="https://cdn.jsdelivr.net/npm/chart.js/dist/chart.umd.min.js"></script>

<div id="_Chart">
  <canvas id="myChart" style="width:1700px; max-height: 550px;"></canvas>
</div>

推荐答案

注意,使用Chart.js v4时,需要将tooltip configuration放在options.plugins中.描述here传递给工具提示callbacks的上下文.

你的callbacks可以写如下:

callbacks: {
  label: ctx => 'Value: ' + ctx.raw + ' ' + ctx.label + ' ' + ctx.dataset.databooking[ctx.dataIndex],
  title: ctx => data.title
}

请查看下面修改的代码,看看它是如何工作的.

var ctx = document.getElementById('myChart').getContext('2d');

var data = {
  title: "Booking duration between 01/08/2023 and 29/03/2024",
  labels: ["0 - 6 days", "7 - 13 days", "14 - 20 days", "21 - 27 days", "28 - 34 days"],
  datasets: [{
    data: [2126, 430, 51, 20, 44],
    backgroundColor: ["#82B6EB", "#434348", "#94EE7E", "#F3A15E", "#8385E8"],
    datalabels: ["79.6 %", "16.1 %", "1.91 %", "0.75 %", "1.65 %"],
    databooking: ["( 2126 bookings)", "( 430 bookings)", "( 51 bookings)", "( 20 bookings)", "( 44 bookings)"],
    hoverOffset: 20
  }]
};

var myChart = new Chart(ctx, {
  type: 'pie',
  data: data,
  options: {
    plugins: {
      tooltip: {
        callbacks: {
          label: ctx => 'Value: ' + ctx.raw + ' ' + ctx.label + ' ' + ctx.dataset.databooking[ctx.dataIndex],
          title: ctx => data.title
        }
      }
    }
  }
});
<script src="https://cdn.jsdelivr.net/npm/chart.js@^4"></script>
<canvas id="myChart" style="max-height: 200px"></canvas>

Javascript相关问答推荐

一次仅播放一个音频

Phaser 3 console. log()特定游戏角色的瓷砖属性

TypeScript索引签名模板限制

我们如何从一个行动中分派行动

在拖放时阻止文件打开

如何从隐藏/显示中删除其中一个点击?

使用原型判断对象是否为类的实例

如何在coCos2d-x中更正此错误

闭包是将值复制到内存的另一个位置吗?

在Matter.js中添加从点A到另一个约束的约束

MongoDB受困于太多的数据

ngOnChanges仅在第二次调用时才触发

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

用Reaction-RT-Chart创建实时条形图

是否设置以JavaScript为背景的画布元素?

material UI自动完成全宽

使用onClick单击子元素时,使用交点观察器的关键帧动画意外运行

在Reaction Native中,ScrolltoIndex在结束时不一致地返回到索引0

从客户端更新MongoDB数据库

在ReactJS上挂载组件时获得多个身份验证请求