0
私は単純な棒グラフを作成するためにd3.jsを使っています。私はd3.csv
データを使って棒グラフを作った。しかし、今私はcsvfileから1つの列だけを使用しようとしています。d3のCSVデータセットのテキストフィールドをカウントするjs
この列のすべての項目は文字列値です。具体的には都市です。それらの一部はユニークですが、他のものは複数回出現します。
例:
city
Mor
Gdl
Mex
Bog
Mad
Rio
Bar
Mor
Gdl
Mor
Rio
Mor
Bog
Mor
私はこのコラムを使用して棒グラフを作成します。 x value
は都市となり、y value
は都市の出現回数になります。
私はこのコードを使用しています。しかし、私はy value
を取得することはできません。
d3.csv("../cities.csv", function(error, dataset) {
dataset.forEach(function(d) {
d.count = +d.city;
});
x.domain(dataset.map(function(d) { return d.city; }));
y.domain([0, d3.max(dataset, function(d) { return d.count; })]);
svg.append('g')
.attr('class', 'x axis')
.attr('transform', 'translate(0,' + h + ")")
.call(xAxis);
svg.append('g')
.attr('class', 'y axis')
.call(yAxis)
.append('text')
.attr('transform', 'rotate(-90)')
.attr('y', 6)
.attr('dy', '.71em')
.style('text-anchor', 'end')
.text('Número de contratistas');
var bars = svg.selectAll('.bar')
.data(dataset)
.enter()
.append('rect')
.attr('class', 'bar')
.attr('x', function(d) { return x(d.city); })
.attr('width', x.rangeBand())
.attr('y', function(d) { return y(d.count); })
.attr('height', function(d) { return h - y(dataset.map(d.count));});
});
このコードから、各都市からのカウントを取得するために私の最初の試みでした:
dataset.forEach(function(d) {
d.count = +d.city;
});
どのように私はこのようなものを得るために、このfucntionを向上させることができます棒グラフの?
改善のための提案は歓迎します!ありがとう。
おかげで、@Stuurpiekは、私はあなたの例を試してみましたが、それは各都市からの値をプロットしません。私はd3.histogram()が解決策であると思っています。 – estebanpdl
私のコードを少し変更すれば、あなたの例は素晴らしいです!ありがとう! – estebanpdl
1つの質問:「未定義」は何を表していますか? – estebanpdl