2016-05-29 114 views
0

我目前正在创建一个条形图,可以从d3直方图获取数据。d3直方图和条形图数据

创建直方图是这样的:

var binningThresholds = d3.range(getMinValue(rows, 'Model year'), getMaxValue(rows, 'Model year') + 2) 

var histogram = d3.layout.histogram() 
    .value(getModelYear) 
    .bins(binningThresholds) 
    (rows); 

我收到从CSV输入行。我已经做了很多与输入的东西,所以这工作正常。

直方图现在是对象数组的数组。

当我现在想用这个histogram并添加一个酒吧,为阵列中的每个指标的图表,没有错误显示了和D3没有任何grecttext标签附加到DOM。

var histogramBars = histogramSvg.selectAll('g') 
    .data(histogram) 
    .enter() 
    .append('g'); 

histogramBars.append('rect'); 

histogramBars.append('text') 
    .text(function(d) { 
     return d.length; 
    }) 

我真的不知道为什么,有没有人看到错误?

回答

2

请勿使用.selectAll('g').data...,我的猜测是在您的可视化中还有其他g元素,并且您正在选择一些您并不想要的东西。相反,请执行如下操作:

var histogramBars = histogramSvg.selectAll('.myUniqueClass') 
    .data(histogram) 
    .enter() 
    .append('g') 
    .attr('class', 'myUniqueClass'); 
+0

谢谢,就是这样。 – luuksen

+0

@Mark,即使删除'.attr('class','myUniqueClass')',它的工作原理也是一样的。 –

+1

@GerardoFurtado,它将用于初始'输入'选择。如果他需要处理更新或退出的情况,这将是必要的。 – Mark