javascript - 悬停时从 Chart.js 中删除数据文本

标签 javascript html css chart.js

我正在使用 Chart.js 制作圆环图。悬停在 donut 部分时,我试图显示“40% 的人”,但它在“数据集”对象中显示的数据显示“40% 的人:40”。如果将鼠标悬停在 donut 的海军部分,您将看到数据显示。我已经尝试在数据数组上进行 javascript 拆分和拼接,但无法删除 : 40 。我的问题是如何为每个标签显示:“People 40%”而不是“People 40%: 40”等等?

https://codepen.io/zepzia/pen/WdrWww

  <div class="wrapper">
    <canvas id="commitments-area" width="200" height="200"></canvas>
  </div>


.wrapper {
  height: 200px;
  width: 200px;
  margin: 0 auto;
}


var oilCanvas = document.getElementById("commitments-area");

Chart.defaults.global.defaultFontSize = 12;
Chart.defaults.global.legend.display = false;
Chart.defaults.global.tooltips;



var oilData = {
    labels: [
        "People (40%)",
        "Aliens (32%)",
        "Dogs (13%)",
        "Whales (15%)"
    ],
    datasets: [
        {

            data: [40, 32, 13, 15],
            backgroundColor: [
                "#13284a",
                "#4b9cd3",
                "#3b7ca7",
                "#99cdec",
                "#84d1ff"
            ]
        }]
};

var chartOptions = {
    legend: {
      position: 'bottom'
    },

    animation: {
      animateRotate: true,
      animateScale: true
    },


};

var pieChart = new Chart(oilCanvas, {
  type: 'doughnut',
  data: oilData,
  options: chartOptions
});

最佳答案

这就是答案,我已经在此处发布了 codepen 中的 js,请参阅更新的“选项”,代码段底部的“return tootipLabel”部分以获得您正在寻找的 X% 结果。

归功于 http://blog.cryst.co.uk/2016/06/03/adding-percentages-chart-js-pie-chart-tooltips/为我指明了正确的方向:

var oilCanvas = document.getElementById("commitments-area");

Chart.defaults.global.defaultFontSize = 12;
Chart.defaults.global.legend.display = false;
Chart.defaults.global.tooltips;



var oilData = {
    labels: [
        "People",
        "Aliens",
        "Dogs",
        "Whales"
    ],
    datasets: [
        {

            data: [40, 32, 13, 15],
            backgroundColor: [
                "#13284a",
                "#4b9cd3",
                "#3b7ca7",
                "#99cdec",
                "#84d1ff"
            ]
        }]
};

var chartOptions = {
    legend: {
      position: 'bottom'
    },

    animation: {
      animateRotate: true,
      animateScale: true
    },


};

var pieChart = new Chart(oilCanvas, {
  type: 'doughnut',
  data: oilData,
      options: {
        tooltips: {
            callbacks: {
                label: function(tooltipItem, data) {
                    var allData = data.datasets[tooltipItem.datasetIndex].data;
                    var tooltipLabel = data.labels[tooltipItem.index];
                    var tooltipData = allData[tooltipItem.index];
                    var total = 0;
                    for (var i in allData) {
                        total += allData[i];
                    }
                    var tooltipPercentage = Math.round((tooltipData / total) * 100);
                    return tooltipLabel + ': ' + ' ' + tooltipPercentage + '%';
                }
            }
        }
    }
});
.wrapper {
  height: 200px;
  width: 200px;
  margin: 0 auto;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>

<div class="wrapper">
<canvas id="commitments-area" width="200" height="200"></canvas>
</div>

关于javascript - 悬停时从 Chart.js 中删除数据文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48115868/

相关文章:

javascript - 高度不均匀的 float 元素的意外行为

javascript - JS代码不起作用

php - 我的 CSS 有什么问题?

javascript - 如何使用javascript计算嵌套数组中的数组数量

javascript - Plotly.js 添加标记将填充添加到 x 轴

css - 在 .row 中对齐图标和文本的垂直中心

javascript - 如何使用javascript为jsp隐藏()和显示()函数

javascript - AJAX - 可以标记请求响应到上一个响应的结尾吗?

javascript - 为函数参数定义对象类型/在 VS Code 中自动完成

html - 样式表中的 CSS 继承?