実際に必要なのは序数スケールだけです! あとは軸がやってくれます。
ここでチェックしてください。
基本的に私は変更しました:
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;
}));
そして、1 つの文字列値のカテゴリ列をデータに追加しました。どのプロパティが文字列値であるかをハードコーディングするのが少し面倒でした。