一連の異なる基準 (配列として格納) に基づいてバーが並べ替えられる横棒グラフを作成しました。バーを並べ替えることができますが、できないように見えることは、y軸をチャートのバーに合わせて再描画または再並べ替えすることです。
これが現在のページです: ここにリンクの説明を入力してください
以下は、ラベルを書き、バーを並べ替えるためのコードです。
var yAxisLabelNames = d3.scale.ordinal()
.domain(dataset.map(function(d){
return d.name;}))
.rangeRoundBands([padding, h - padding], 0.05);
var yAxis = d3.svg.axis()
.scale(yAxisLabelNames)
.orient("left");
svg.append("g")
.attr("class", "y axis")
.attr("transform", "translate(" + padding + ",0)")
.call(yAxis);
そして私のソート機能の1つ:
d3.select("#patchCompetition")
.on("click", function(){
svg.selectAll("rect.bars")
.sort(function(a, b){
return d3.ascending(a.values[4], b.values[4])
})
.transition()
.delay(function(d, i){
return i *50;
})
.duration(1000)
.attr("y", function(d, i) {
return yScale(i)
});
svg.selectAll(".labels")
.sort(function(a, b){
return d3.ascending(a.values[4], b.values[4])
})
.transition()
.delay(function(d, i){
return i * 50;
})
.duration(1000)
.attr("text-anchor", "middle")
.attr("y", function(d, i) {
return yScale(i) +yScale.rangeBand() /2 +4;
});
svg.select(".y axis").call(yAxis);
});