You need to enable JavaScript to run this app. Chart.js双折线图配置问题:为第二组峰值数据设置对应标签
优惠活动
大模型
产品
解决方案
定价
更多

Chart.js双折线图配置问题:为第二组峰值数据设置对应标签

问题修复方案

你当前的代码存在三个核心问题:

  1. 峰值数据集的data格式错误,不应该把整个values2、labels2数组塞到单个x/y字段中,需要把每个峰值处理为独立的坐标对象
  2. 峰值的x、y坐标写反了,x轴应为峰值对应的位置(labels2的值),y轴应为峰值数值(values2的值)
  3. 需要显式指定x轴为线性轴,才能同时匹配第一组的顺序索引和第二组的独立坐标

修改后完整代码

<script>
// 先把后端传入的峰值数据处理为坐标数组
const peakPositions = {{ labels2 | safe }};
const peakValues = {{ values2 | safe }};
const peakDataset = peakPositions.map((pos, idx) => ({
  x: pos,
  y: peakValues[idx]
}));

var line_chart = {
  type: 'line',
  data: {
    labels: {{ labels1 | safe }}, // 对应原1~values1长度的索引数组
    datasets: [
      {
        label: 'Sweep data',
        data: {{ values1 | safe }},
        borderColor: 'red',
        borderWidth: 1,
        fill: false,
        pointRadius: 0 // 5万点关闭点显示,大幅提升渲染性能
      },
      {
        label: 'Peak data',
        data: peakDataset,
        borderColor: 'black',
        backgroundColor: 'black',
        borderWidth: 1,
        showLine: false, // 不需要峰值连线就设为false,要连线可改true
        pointRadius: 5 // 放大峰值点方便识别
      }
    ]
  },
  options: {
    scales: {
      x: {
        type: 'linear', // 必须指定为线性轴,支持自定义x坐标
        title: {
          display: true,
          text: '位置'
        }
      },
      y: {
        title: {
          display: true,
          text: '数值'
        }
      }
    }
  }
}

var context = document.getElementById('myChart').getContext('2d');
new Chart(context, line_chart);
</script>

可选优化方案

如果不想在前端处理峰值数组,也可以在main.py里提前把峰值拼接为[{"x":7,"y":75.633}, ...]格式,直接传入模板即可,不需要前端做map转换。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 16:36:04