我正在使用基于此示例的D3.js RadarChart:https://github.com/alangrafu/radar-chart-d3。
问题是我的数据的最小值为1,所以我希望雷达中间的值为1。但该脚本假定最小值为0.
有没有办法改变它?谢谢你的帮忙。
答案 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)))