javascript - 使用 chart.js 在任意位置实现具有 50 个点的雷达图的最有效方法是什么

标签 javascript chart.js radar-chart

考虑以下几行的数据序列:

data = [{angle:1.2,value:1.2},...,{angle:355.2: value:5.6}];

我想在径向缩放图(即表示每个点的值有多高的圆形带)上显示此数据,以显示 Angular 与值。每个数据集的 Angular 都会发生微小但无法控制的变化,但在图表周围总会有大约 50 个 Angular 相当均匀地分布。

看起来 chart.js 有两个不太符合要求的选项:

  • 雷达图似乎需要每个点的标签,但没有明显的方法来控制这些标签的应用位置。
  • 一个 x-y 散点图,我可以为其计算 x/y 坐标,但没有径向标度来帮助可视化每个点的值。

有没有办法将这两者或我错过的一些选项结合起来,以控制它们以实现我在这里寻找的结果?

编辑 - 例如,这显示数据但缺少径向刻度:

https://jsfiddle.net/7d7ghaxx/4/

**Edit2 - 这是我希望看到的结果:

enter image description here

最佳答案

演示和代码:

https://stackblitz.com/edit/js-jp4xm4?file=index.js

说明:

  1. 使用了 scatter绘制点的图表
  2. 添加(写)了一个 chartjs pluginbeforeUpdate 上将点从极坐标转换为笛卡尔坐标,因此您不必担心在每次更新之前进行转换
  3. 通过添加 gridLines 隐藏 x 和 y 网格(不是通过原点的轴) : { color: 'transparent' } ticks : { 显示: false }
  4. 使两个轴的 minmax(ticks 中的选项)相等,以便原点位于中心
  5. 添加了 radialLinear极坐标网格的比例

(更新 1)

  1. 添加了 tooltip label callback将工具提示显示为 (r,θ) 而不是默认的 (x,y)

(更新 2)

  1. 添加(写)了一个beforeDraw plugin根据 OP 的需要用浅蓝色填充 ctx

PS:(指出只是为了有点竞争力)我使用了 chartjs(与其他答案不同),因为 OP 想要一个 chartjs 解决方案,因为它在问题中明确写道:“使用 chart.js”。可能有比 chartjs 更好的解决方案,但这无关紧要。

关于javascript - 使用 chart.js 在任意位置实现具有 50 个点的雷达图的最有效方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47293820/

相关文章:

python-3.x - 图中的 Axis 隐藏了 Axis 标签?

javascript - casperjs:如何使用ajax更新捕获循环中的页面

javascript - 如何计算 jQuery 中两个日期之间的月份?

javascript - jQuery Bookmarklet 偶尔工作,原因未知

javascript - Chart.js 条形图溢出其包含元素

javascript - 在 Angular-chart.js 中动态创建的 Canvas 上创建图表

javascript - 在 'partition' 中找不到导出 'rxjs'

javascript - 如何将 Axios API 与 Chart.js 和 React.js 结合使用

Excel VBA 用于更改雷达图上的标记大小、颜色和透明度

ios - 如何集成雷达叠加显示天气?