いくつかの csv データから積み上げ棒グラフを作成しようとしています。Scott Murray のチュートリアルhttp://alignedleft.com/tutorials/d3/ (余談ですが、これは私が遭遇した d3.js に関する最高のチュートリアルであり、実際には d3 wiki にリンクする必要があります) を読んだ後、Andrew も同様です。 Davis のチュートリアル 必要な四角形を作成するために、次の試用コードをハッシュ化しました。
window.onload = function()
{
var LikertData = [{a:0,b:1},{a:0,b:1},{a:0,b:1},{a:0,b:1},];
var w = 200;
var h = 200;
var svg = d3.select("body").append("svg")
.attr("width", w)
.attr("height", h);
var myG = svg.selectAll("g")
.data(LikertData)
.enter()
.append("g")
.text(function(d)
{
var myRect = d3.selectAll("rect")
.data(d.entries)
.enter()
.append("rect");
return myRect;
});
}
LikertData 配列を形成する配列ごとに、rect が親の g 要素に追加されるという考え方です。しかし、うまくいきません。私は少し暖かくなっていますか?
編集:これは私が望むものに近いです-私を困惑させている.dataと、データに使用したいものを示しました:
window.onload = function()
{
d3.csv("likert.csv", function(LikertData){
var svg = d3.select("body").append("svg")
var myG = svg.selectAll("g")
.data(LikertData)
.enter()
.append("g")
.selectAll("rect")
.data()//<--I want data to use an array of key values for the parent g's d
.enter()
.append("rect");
});
}
console.log(d3.entries(LikertData)) を使用すると、次のように複数のオブジェクトが生成されるため、データは関連付けられます。
[
Object
key: "50"
value: Object
Agree: ""
Always: "39.1%"
Disagree: ""
Neutral: ""
Never: "4.3%"
Row Labels: "I run out of time in long tasks"
Sometimes: "52.2%"
Strongly Agree: ""
Strongly Disagree: ""
Unanswered: "4.3%"
__proto__: Object
__proto__: Object
]