ChartJS 如何将自定义文本添加到charts.js中的工具提示

bvn4nwqk  于 2022-11-06  发布在  Chart.js
关注(0)|答案(2)|浏览(202)

我目前正在摆弄一些图表,我希望有一个字符串的文本出现,因为你悬停在某些数据点。
例如,目前我的数据集如下所示:

var data = {
    labels: ["January", "February:", "March", "April", "May", "June", "July"],
    datasets: [{
        label: "My first dataset",
        fillColor: "rgba(220,220,220,0.2)",
        strokeColor: "rgba(220,220,220,1)",
        pointColor: "rgba(220,220,220,1)",
        pointStrokeColor: "#fff",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(220,220,220,1)",
        data: [65, 59, 80, 81, 56, 55, 40]
    }]
};

我想举个例子,在二月上空盘旋:59点,并显示“二月:第59节-第59章
谢谢你

svgewumm

svgewumm1#

首先在html中添加此内容

<canvas id="myChart" width="400" height="200"></canvas>
<div id="chartjs-tooltip"></div>

:js

var data = {
    labels: ["January", "February", "March", "April", "May", "June", "July"],
    datasets: [{
        label: "My First dataset",
        fillColor: "rgba(220,220,220,0.2)",
        strokeColor: "rgba(220,220,220,1)",
        pointColor: "rgba(220,220,220,1)",
        pointStrokeColor: "#fff",
        pointHighlightFill: "#fff",
        pointHighlightStroke: "rgba(220,220,220,1)",
        data: [65, 59, 80, 81, 56, 55, 40]
    }]
};

var myLineChart = new Chart(ctx).Line(data, {
    customTooltips: function (tooltip) {
        var tooltipEl = $('#chartjs-tooltip');

        if (!tooltip) {
            tooltipEl.css({
                opacity: 0
            });
            return;
        }

        tooltipEl.removeClass('above below');
        tooltipEl.addClass(tooltip.yAlign);

        // split out the label and value and make your own tooltip here
        var parts = tooltip.text.split(":");
        var innerHtml = '<span>' + parts[0].trim() + '</span> : <span><b>' + parts[1].trim() + '</b></span>';
        tooltipEl.html(innerHtml);

        tooltipEl.css({
            opacity: 1,
            left: tooltip.chart.canvas.offsetLeft + tooltip.x + 'px',
            top: tooltip.chart.canvas.offsetTop + tooltip.y + 'px',
            fontFamily: tooltip.fontFamily,
            fontSize: tooltip.fontSize,
            fontStyle: tooltip.fontStyle,
        });
    }
});

还有一些造型的东西
:css


# chartjs-tooltip {

     opacity: 0;
     position: absolute;
     background: rgba(0, 0, 0, .7);
     color: white;
     padding: 3px;
     border-radius: 3px;
     -webkit-transition: all .1s ease;
     transition: all .1s ease;
     pointer-events: none;
     -webkit-transform: translate(-50%, 0);
     transform: translate(-50%, 0);
 }
vm0i2vca

vm0i2vca2#

(Note Chart.js已经自动添加了工具提示文本;上面的问题有点不清楚。2问题是关于如何在工具提示中添加 custom 文本,而不仅仅是它选择的默认值-给定点的x和y值。3)使用options.tooltips中的callbacks字段。4注意工具提示的主体被称为“标签”。

tooltips: {
    intersect: false, // makes it easier to select tooltips on mobile
    callbacks: {
        title: (toolTipItem, data) => {
            let title = toolTipItem[0].x; // uses the x value of this point as the title
            return title;
        },
        label: (toolTipItem, data) => {
            let labels = data[toolTipItem.index!].labelText; // assumes your data has a `labelText` field.
            return labels;
        },
    },
},

请注意,某些字段(如title)在其回调中传递了一个toolTipItem对象数组;其他的,如label,被传递了一个对象。因此,toolTipItem对象的属性对于每个对象必须被不同地访问。

  • 回叫文档:http://www.chartjs.org/docs/latest/configuration/tooltip.html#tooltip-callbacks
  • 您可以在toolTipItem对象上存取的属性-https://www.chartjs.org/docs/latest/configuration/tooltip.html#tooltip-item-interface
  • 一些官方的例子:https://www.chartjs.org/docs/latest/configuration/tooltip.html#label-callback
  • 如何自定义Chart.js 2.0圆环图的工具提示?
    • 如何换行?* 无论如何,将标签拆分成数组,然后返回数组;数组中的每一行都将在单独的一行上。如果行仍然太长,则需要使用一个函数来检测长行并将其拆分为额外的数组项。

相关问题