私は非常に基本的な質問があります。私は棒グラフとしてプロットされている種/豊富なcsvを持っています。データセットに属、場所などのプロパティのヘッダーが含まれています。プロパティ名のドロップダウンメニューから選択したヘッダー/プロパティに応じて、バーの色をd3.scaleOrdinal()
にしたいとします。私はcsvをロードする前にヘッダ/プロパティを知らない。D3:ドロップダウンメニューから選択したプロパティに従って、バーの色を設定します。
したがって、ユーザーが「場所」を選択した場合、バーは場所などに応じて色付けされます。ユーザーが選択しない場合、カラーバーはすべて同じ色でなければなりません。
スケールドメインを作成するためにデータからプロパティを選択するにはどうすればよいですか?これは最善の方法
d3.csv("data.csv", function(d) {
d.abundance = +d.abundance;
return d;
}, function(error, data) {
if (error) throw error;
//color domain
var color = d3.scaleOrdinal().range(d3.schemeCategory10);
//dropdown menu from csv header
var select = d3.select('body')
.append('select')
.attr('class','select')
.on('change',onchange)
.selectAll('option')
.data(d3.keys(data[0])).enter()
.append('option')
.text(function (d) { return d; });
function onchange() {
selectValue = d3.select('select').property('value')
color.domain(data.map(function(d) { return d.selectValue; }))
g.selectAll(".bar")
.attr("fill", function(d) { return color(d.selectValue); })
};
});