使用1作为雷达图的最小值

时间:2013-12-02 15:46:47

标签: d3.js

我正在使用基于此示例的D3.js RadarChart:https://github.com/alangrafu/radar-chart-d3

问题是我的数据的最小值为1,所以我希望雷达中间的值为1。但该脚本假定最小值为0.

有没有办法改变它?谢谢你的帮忙。

1 个答案:

答案 0 :(得分:1)

这有点hackish,但修改输入数据可能更容易。来自example page

d = [
     [
           {axis: "strength", value: 13}, 
           {axis: "intelligence", value: 1}, 
           {axis: "charisma", value: 8},  
           {axis: "dexterity", value: 4},  
           {axis: "luck", value: 9}
          ],[
           {axis: "strength", value: 3}, 
           {axis: "intelligence", value: 15}, 
           {axis: "charisma", value: 4}, 
           {axis: "dexterity", value: 1},  
           {axis: "luck", value: 15}
          ],[
           {axis: "strength", value: 5}, 
           {axis: "intelligence", value: 1}, 
           {axis: "charisma", value: 16}, 
           {axis: "dexterity", value: 10},  
           {axis: "luck", value: 5}
     ]
];

要使绘图从1开始而不是0,只需减去1:

d.forEach(function(shape){
  shape.forEach(function(attribute){
    attribute.value = attribute.value - 1;
  });
});

要正确执行此操作,您需要更改source of the library

创建比例:

var scale = d3.scale.linear().domain([cfg.minValue, cfg.maxValue])

将值映射到[0,1]。然后,替换

的所有实例
parseFloat(Math.max(j.value, 0))/cfg.maxValue

scale(parseFloat(Math.max(j.value, 0)))