我正在尝试从一些 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 数组的每个数组,将一个矩形添加到父 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
]