亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 ChartJS 中讓 onclick/hover 顯示關聯值

如何在 ChartJS 中讓 onclick/hover 顯示關聯值

收到一只叮咚 2021-11-12 15:55:35
我有一個(定期更新)ChartJS線圖如下,三種類型的數據的工作關- prices,dates以及相關聯的more_info-從一個Django API收集:<script>    var myChart    function refresh_graph() {        {% block jquery %}        var chart_endpoint = "{% url 'chart_data' current_id %}"        var defaultData = []        var labels = []        var more_info = []        $.ajax({            method: "GET",            url: chart_endpoint,            success: function(data){                defaultData = data.prices                labels = data.dates                more_info = data.more_info                if(myChart){                    myChart.destroy();                }                var ctx = document.getElementById('myChart').getContext('2d');                myChart = new Chart(ctx, {                    type: 'line',                    data: {                        labels: labels,                        datasets : [{                            label: 'Price',                            data: defaultData,                            backgroundColor: [                                'rgba(54, 162, 235, 0.2)',                            ],                            borderColor: [                                'rgba(54, 162, 235, 1)',                            ],                            borderWidth: 2                        }]                    },                    options: {                        elements: {                            line: {                                tension: 0 // disables bezier curves                            }                        },                        legend: {                            display: false                        },我試圖弄清楚如何做到這一點,當用戶點擊或懸停在圖表中的一個數據點(即 a priceat a date)上時(我會很高興),他們會請參閱相關的more_info.我所知道的這個使用getElementById,但無法弄清楚如何延伸到這樣的情況,在那里我不希望顯示標簽(這里date)和數據點值(此處price),而是第三個值,即more_info。我也知道這種使用自定義工具提示的方式,但也無法弄清楚如何從我只是使用tooltipItem.xLabel( date) 和tooltipItem.yLabel( price) 而不是第三個關聯值的情況擴展這種方式。
查看完整描述

1 回答

?
藍山帝景

TA貢獻1843條經驗 獲得超7個贊

這是使用工具提示的解決方案(忽略來自 OP 的 Ajax):


var myChart

function refresh_graph() {

  var labels = ["Monday", "Tuesday", "Wednesday","Thursday","Friday","Saturday","Sunday"]

  var defaultData = [0.1,0.5,0.3,0.4,0.6,0.8,0.3]

  var more_info = ["Monday info", "Tuesday info", "Wednesday info","Thursday info","Friday info","Saturday info","Sunday info"]


  if(myChart){

    myChart.destroy();

  }


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

  myChart = new Chart(ctx, {

    type: 'line',

    data: {

      labels: labels,

      datasets: [{

        label: "Price",

        data: defaultData,

        backgroundColor: 'rgba(54, 162, 235, 0.2)',

        borderColor: 'rgba(54, 162, 235, 1)',

        borderWidth: 2,

      }]

    },

    options: {

      responsive : true,

      tooltips : {

        callbacks : {

          title : function() {

            return 'More information:';

          },

          afterLabel : function(tooltipItem, data) {

            return 'Information: ' + more_info[tooltipItem.index];

          },

        }

      },

      elements: {

        line: {

          tension: 0

        }

      },

      legend: {

        display: false

      },

      scales: {

        yAxes: [{

          ticks: {

            suggestedMin: 0,

            suggestedMax: 1

          }

        }]

      },

      animation: {

        duration: 0

      },

      hover: {

        animationDuration: 0

      },

      responsiveAnimationDuration: 0

    }

  })

  setTimeout(refresh_graph, 50000);

}

setTimeout(refresh_graph, 0);

帶有自定義工具提示的完整 codepen:https ://codepen.io/kh_one/pen/OJJPBpJ 。


查看完整回答
反對 回復 2021-11-12
  • 1 回答
  • 0 關注
  • 130 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號