d3.js で csv ファイルを使用する際に問題が発生しました。
最初に、データを含む配列を使用して視覚化しました。
var データセット = [1,1,1,1,1,1,1,2,3,4]
数に応じて、長方形の色が異なります。次のコード行を使用してこれを行いました。
.style("fill", function(d) {
if (d==1) {return "black"}
else if (d==2) {return "red"}
else if (d==3) {return "yellow"}
else if (d==4) {return "green"}
else {return "purple"}
;})
コードをより柔軟にしたいので、csv-datafile を使用して同じことをしたいと考えています。次のようになります。
2008
1
1
1
1
2
3
4
次のコード行に含めました。
d3.csv("landtag.csv", function(d) {
}
しかし、それは機能しません: すべての長方形は紫色であるため、「else」が選択されました。
円の数はデータ長に依存します - これは機能しています!
なぜそれが可能なのですか?csv ファイルを間違った方法で挿入していませんか?
チュートリアルですでにいくつかの解決策を試しましたが、うまくいきませんでした。
ご協力いただきありがとうございます!
私の完全なコード:
// Width and height
var w = 1000;
var h = 1000;
// create svg variable
var svg = d3.select("p")
.append("svg")
.attr("id", "sitze") ;
var sitze;
d3.csv("landtag.csv", function(d) {
// create variable
var rect = svg.selectAll("rect")
.data(d["2008"])
.enter()
.append("rect")
.attr("x", 0)
.attr("y", 0)
.attr("width", 50)
.attr("height", 50)
//Bar width depending on number of datapoints in array
.attr("x", function(d, i) {
return i * (w / d.length);
})
// if for different colors
.style("fill", function(d) {
if (d=="1") {return "black"}
else if (d=="2") {return "red"}
else if (d=="3") {return "yellow"}
else if (d=="4") {return "green"}
else {return "purple"}
;})
// paddings
.attr("x", function(d, i) {return (i % 17) * 55;})
.attr("y", function(d, i) {return Math.floor(i / 17) * 55;});
})