我正在寻找一种将分类数据添加到 d3js 平行坐标的方法。D3js 对我来说是新的,我可以理解一些正在做的事情,但还没有找到一种方法来做到这一点。并行集不是一个好的选择,因为我的大部分数据都是连续的。
如果您考虑汽车示例,我希望能够在轴上按品牌进行过滤(例如过滤,以便仅显示福特的数据)。我假设需要一个变量来定义每辆车(例如标致、福特、宝马、奥迪等......)
这是汽车的例子。
感谢任何回复的人。
我正在寻找一种将分类数据添加到 d3js 平行坐标的方法。D3js 对我来说是新的,我可以理解一些正在做的事情,但还没有找到一种方法来做到这一点。并行集不是一个好的选择,因为我的大部分数据都是连续的。
如果您考虑汽车示例,我希望能够在轴上按品牌进行过滤(例如过滤,以便仅显示福特的数据)。我假设需要一个变量来定义每辆车(例如标致、福特、宝马、奥迪等......)
这是汽车的例子。
感谢任何回复的人。
实际上,您所需要的只是一个序数比例!轴将负责其余的工作。
在这里查看。
基本上我改变了:
x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
return d != "name" && (y[d] = d3.scale.linear()
.domain(d3.extent(cars, function(p) { return +p[d]; }))
.range([h, 0]));
}));
至:
x.domain(dimensions = d3.keys(cars[0]).filter(function(d) {
if(d === "name") return false;
if(d === "colour") {
y[d] = d3.scale.ordinal()
.domain(cars.map(function(p) { return p[d]; }))
.rangePoints([h, 0]);
}
else {
y[d] = d3.scale.linear()
.domain(d3.extent(cars, function(p) { return +p[d]; }))
.range([h, 0]);
}
return true;
}));
我在数据中添加了一个字符串值的分类列。对于哪个属性是字符串值的硬编码,我有点懒惰。