并排图D3.js

并排图D3.js,d3.js,side-by-side,D3.js,Side By Side,我是D3新手,请耐心点 我试图在d3.js中构建一个并排图。我在尝试在“g”(组)中添加“rect”(矩形svg)时遇到了一些困难。我不确定json数据的格式是否不正确。或者如果我错过了一些基本的步骤 Json对象=数据 var data = [ { dontknow: 3, neutral: 0, optimistic: 62, pessimistic: 15, veryoptimistic: 14, verypessimistic: 6, year: 2013

我是D3新手,请耐心点

我试图在d3.js中构建一个并排图。我在尝试在“g”(组)中添加“rect”(矩形svg)时遇到了一些困难。我不确定json数据的格式是否不正确。或者如果我错过了一些基本的步骤

Json对象=数据

var data = [
 {
  dontknow: 3,
  neutral: 0,
  optimistic: 62,
  pessimistic: 15,
  veryoptimistic: 14,
  verypessimistic: 6,
  year: 2013
 },
 {
  dontknow: 10,
  neutral: 4,
  optimistic: 42,
  pessimistic: 55,
  veryoptimistic: 64,
  verypessimistic: 5,
  year: 2013
 }
]
我的代码如下所示:

var svg = d3.select("#graph5")
.append("svg")
.attr("width", w)
.attr("height", h);

//Create groups
var g = svg.selectAll('g')
.data(data)
.enter()
.append('g');

//Add rectangles to each g
var rect = g.selectAll("rect")
   .data(function(d){ return d })
   .enter()
   .append("rect")
   .attr('width', function(d){ d.year });
SVG和“g”元素似乎创建正确,正确的数据与“g”关联,但最后的rect调用似乎不起作用

有什么想法吗


谢谢

看起来对象键引起了问题。 通过使用内置的“d3.values(d)”函数,我能够创建RECT

下面是代码(注意第二行的区别):

var rect = g.selectAll("rect")
 .data(function(d){ return d3.values(d) })
 .enter()
 .append("rect")
 .attr('width', function(d,i){ console.log(d); return d });