You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确获取Chart.js配置中数据集的指定数值?

解决Chart.js配置中无法获取数据的问题

你遇到的问题在于代码里直接调用data.datasets[0].data时,data并不是一个全局可访问的变量——它是你定义的config对象里的一个属性,浏览器找不到这个独立的data变量,所以alert自然没有输出。

要获取目标值426777.148122,可以通过两种方式实现:

方式1:直接从配置对象中读取

你已经把数据存在config里了,直接通过config访问即可:

// 获取第一个数据集的第一个数据点的y值
alert(config.data.datasets[0].data[0].y);

方式2:从已创建的Chart实例中读取

如果你想从已经初始化好的图表实例中获取数据,可以用你定义的forecast_chart变量:

// 从Chart实例中读取对应数据
alert(forecast_chart.data.datasets[0].data[0].y);

修正后的完整代码片段如下:

<script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/2.5.0/Chart.min.js"></script>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<div id = "Global">
  <div id = "gauche">
    <canvas id="line-chart" width="800" height="450"></canvas>
    <script>
      var ctx = document.getElementById("line-chart").getContext('2d');
      var config = {
        type: 'line',
        data: {
          datasets: [{
            data: [{'y': 426777.148122,'x': 18.123}, {'y': 258927.721326,'x': 46.8603108462}, {'y': 5419.37148146,'x': 1110.14081215}, {'y': 5136.33830766,'x': 1138.878123}],
            label: "Model",
            borderColor: "#3e95cd",
            fill: false
          }, {
            label : 'Data',
            fill:false,
            showLine: false,
            backgroundColor: "#FF0000",
            data : [{x: 17.0, y: 454995.091169}, {x: 1137.0, y: 3369.7047454}, {x: 1138.0, y: 3539.605825}, {x: 1140.0, y: 4927.1313084}],
            type: 'line'
          }]
        },
        options: {
          title:{
            display: true,
            text:"Graph"
          },
          scales: {
            xAxes: [{
              type: 'logarithmic',
              position: 'bottom'
            }],
            yAxes: [{
              type: 'logarithmic'
            }]
          }
        }
      };
      var forecast_chart = new Chart(ctx, config);
      // 这里用修正后的方式获取数据
      alert(config.data.datasets[0].data[0].y);
      // 或者用实例获取:alert(forecast_chart.data.datasets[0].data[0].y);
    </script>

这样修改后,alert就能正确弹出你想要的426777.148122值啦。

内容的提问来源于stack exchange,提问作者Peter Harris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:42:02