首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ChartJS雷达-海图悬停文本

ChartJS雷达-海图悬停文本
EN

Stack Overflow用户
提问于 2022-05-16 13:02:29
回答 1查看 410关注 0票数 1

当你在雷达图上悬停时,如何在点上添加自定义文本?我一直在跟踪这个教程,但是雷达图中的数据是数组格式的,而不是指定的这里那样的对象,所以它不适用。

我现在的雷达图:JSfiddle

代码语言:javascript
复制
let dataValues = [100, 120, 80, 100, 90, 110, 100, 100, 100]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-16 14:15:20

如果您等到Chart.js版本3.8发布时,可以在雷达图表中使用对象标记:

代码语言:javascript
复制
let dataValues = [{
    value: 100,
    text: 'f'
  },
  {
    value: 120,
    text: 'd'
  },
  {
    value: 80,
    text: 'q'
  },
  {
    value: 100,
    text: 'b'
  },
  {
    value: 90,
    text: 'z'
  },
  {
    value: 110,
    text: 'efw'
  },
  {
    value: 100,
    text: 'ffew'
  },
  {
    value: 100,
    text: 'ffdddew'
  },
  {
    value: 100,
    text: 'fffff'
  }
]

const sum = dataValues.reduce((a, b) => a.value + b.value, 0);
const avg = sum / dataValues.length;
const sorted = [...dataValues].sort(function(a, b) {
  return a.value - b.value;
})

const data = {
  labels: [
    'Signal 1',
    'Signal 2',
    'Signal 3',
    'Signal 4',
    'Signal 5',
    'Signal 6',
    'Signal 7',
    'Signal 8',
    'Signal 9'

  ],
  datasets: [{
    label: '9 signals',
    data: dataValues,
    fill: true,
    backgroundColor: 'rgba(210, 203, 203, 0.4)',
    borderColor: 'rgb(210, 203, 203, 0.6)',
    pointBackgroundColor: function(context) {
      const index = context.dataIndex;
      const value = context.dataset.data[index].value;

      return value < sorted[3].value ? 'blue' :
        value < sorted[5].value ? 'green' :
        value < sorted[7].value ? 'orange' :
        'red';
    },
    pointBorderColor: '#fff',
    pointHoverBackgroundColor: '#fff',
    pointHoverBorderColor: 'rgb(255, 99, 132)'
  }]
};

const config = {
  type: 'radar',
  data: data,
  options: {
    plugins: {
      tooltip: {
        callbacks: {
          label: (ctx) => (`${ctx.dataset.label}: ${ctx.parsed.r} ${ctx.dataset.data[ctx.dataIndex].text}`)
        }
      }
    },
    parsing: {
      key: 'value'
    },
    elements: {
      line: {
        borderWidth: 3
      },
      point: {
        pointRadius: 5
      }
    },
    scales: {

      r: {
        angleLines: {
          lineWidth: 2
        },
        grid: {
          circular: true,
          lineWidth: 2
        }
      }
    }
  }
};


let myChart = new Chart(
  document.getElementById('myChart'),
  config
);
代码语言:javascript
复制
<div class="chartBox">
  <canvas id="myChart"></canvas>
  <script src="https://www.chartjs.org/dist/master/chart.js"></script>
</div>

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72259679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档