私はJavascript D3で棒グラフを作成しています。チェックボックスをオンにしたときにデータを並べ替える場合、チェックボックスをオフにすると、ビジュアライゼーションはソートされていない状態に戻ります。
"チェックボックスをオンにしたときのデータの並べ替え"はうまくいきますが、チェックボックスのチェックを外すと違いはありません。どんな助けもありがとうございます。前もって感謝します!チェックボックスをオフにします。
コードスニペット:
<form>
<label><input type="checkbox" id="check" onchange="sortData(this);" value="sort">Sort Data</label>
</form>
<script>
var data;
function sortData(cb) {
if (cb.checked) {
// sort data
var checkedData = data;
checkedData.sort((a, b) => d3.descending(a[myCategory], b[myCategory]));
drawVis(checkedData);
} else {
// do not sort data
console.log("Unchecked!");
drawVis(data);
}
}
function drawVis(data) {
svg.selectAll(".bar").remove();
svg.selectAll("g").remove();
......
svg.append("g")
.attr("class", "axis axis--x")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x));
svg.append("g")
.attr("class", "axis axis--y")
.call(d3.axisLeft(y));
svg.selectAll(".bar")
.data(data)
.enter().append("rect");
......
}
</script>
ここで、値を 'data'に代入していますか? – Ayush
@Ayush私は 'data'に割り当てられた値を持っていますが、このコードスニペットのその部分は省略しました。チェックボックスをオンにすると、バーがソートされます。私は確信していませんが、私は問題が 'データ'変数にあるとは考えていません。 – Emile