【问题标题】:Chart.JS tooltip callbacks label and title (v3.5)Chart.JS 工具提示回调标签和标题 (v3.5)
【发布时间】:2021-09-09 07:19:51
【问题描述】:

(请注意:v2有很多答案,这是v3)

我正在尝试为圆环图设置工具提示 label 和 title。

代码:

        //Create the donut chart
    donut = new Chart('questions_positivity_donut', {
        type: 'doughnut',
        data: { 
            labels: ["Positive", "Other"],
            datasets: [{
                label: 'Sentiment',
                data: [user_context.state.avg_joy, (1-user_context.state.avg_joy)],
                backgroundColor: ['#a9a9a9','#f2f2f2']
            }]
        },
        options: {
            cutout: "70%",
            plugins: {
                legend: {
                    display: false
                },
                maintainAspectRatio: false,
                responsive: true,
                tooltip: {
                    callbacks: {
                        label: function(context) {

                            let label = new Intl.NumberFormat('en-US', {style: 'percent', minimumFractionDigits: 0, maximumFractionDigits: 0}).format(context.formattedValue);
                            return label;
                        },
                        title: function(context) {

                            let title = context.parsed.x;
                            return title;
                        } 
                    },
                    displayColors: false
                }                   
            }
        }
    }); 

label 现在可以工作,并显示数据的值,但 title 返回空白,而不是返回数据的标签(“正”或“其他”)。

如何在tooltip.callback 中返回正确的标题?

示例:“正 35%”和“其他 65%”

【问题讨论】:

    标签: javascript reactjs charts chart.js chart.jsv3


    【解决方案1】:

    如果您记录上下文,您可以看到它是一个包含对象的数组,在您使用的默认交互模式下,它只包含一个项目,因此您可以选择该项目,然后访问它的 label 属性,如下所示:

    var options = {
      type: 'doughnut',
      data: {
        labels: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"],
        datasets: [{
          label: '# of Votes',
          data: [12, 19, 3, 5, 2, 3],
          backgroundColor: ["Red", "Blue", "Yellow", "Green", "Purple", "Orange"]
        }]
      },
      options: {
        plugins: {
          tooltip: {
            callbacks: {
              label: function(context) {
    
                let label = new Intl.NumberFormat('en-US', {
                  style: 'percent',
                  minimumFractionDigits: 0,
                  maximumFractionDigits: 0
                }).format(context.formattedValue);
                return label;
              },
              title: function(context) {
                let title = context[0].label;
                return title;
              }
            },
          }
        }
      }
    }
    
    var ctx = document.getElementById('chartJSContainer').getContext('2d');
    new Chart(ctx, options);
    <body>
      <canvas id="chartJSContainer" width="600" height="400"></canvas>
      <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.5.1/chart.js"></script>
    </body>

    【讨论】:

    • 我试过了,我得到了这个错误:TypeError: Converting circular structure to JSON.
    • 似乎工作得很好,所以如果它不起作用,请分享一个可重现的样本
    • 抱歉,我指的是console.log。是的 - 这是完美的!公认!谢谢
    • 你是如何记录这个的?我正在尝试但仍然失败
    • @Izzi 很抱歉反应迟了,但我只是这样说:console.log(context)
    猜你喜欢
    • 2014-08-22
    • 1970-01-01
    • 2011-09-30
    • 2016-12-13
    • 2017-12-11
    • 1970-01-01
    • 2023-03-25
    • 1970-01-01
    • 2016-04-15
    相关资源
    最近更新 更多