javascript - D3 中的百分比转换似乎不起作用

标签 javascript d3.js

我正在研究一个可视化,其中我堆叠矩形并使它们占容器高度的一定百分比,但尝试运行转换似乎会在开始转换之前将每个矩形的高度重置为其他值。

我认为它获取了像素高度并意外地将其转换为百分比。假设我将高度设置为 13%,13% 代表高度为 45px。假设我想将其转换为 10%。当我开始过渡时,高度跳至 45% (45px->45%),然后滚动至 10%。

我不知道在 D3 代码中哪里可以找到这个。这是显示行为的 fiddle :http://jsfiddle.net/8vGm7/

function reload() {
  var newArray = [];
  var i, sum = 0, nextVal;

  for(i = 0; i < 10; i++) {
    nextVal = Math.random();
    newArray.push(nextVal);
    sum += nextVal;
  }

  var container = d3.select('#container');
  var join = container.selectAll('div.row').data(newArray);

  join.enter().append('div').style('height', '0%')
    .style('background-color', function(d,i) {
      return ['red', 'green', 'blue', 'orange', 'yellow', 'purple', '#ff0', '#0ff', '#000', '#66F'][i];
    })
    .attr('class', 'row');

  join.transition().duration(2000)
    .style('height', function(d) {
      return (100e0 * (d / sum)) + '%';
    });
}

最佳答案

试试这个: http://jsfiddle.net/8vGm7/6/

样式组合 + 清除容器中以前的内容。

var colors = ['red', 'green', 'blue', 'orange', 'yellow', 'purple', '#ff0', '#0ff', '#000', '#66F'];    
function reload() {
    var i=0, 
        sum = 0, 
        newArray = [],
        nextVal,
        container,
        join;

    for(i = 0; i < 10; i++) {
        nextVal = Math.random();
        newArray.push(nextVal);
        sum += nextVal;
    }

    document.querySelector('#container').innerHTML = '';
    container = d3.select('#container');
    join = container.selectAll('div.row').data(newArray);

    join
    .enter()
    .append('div')
    .attr('style', function(d,i){
        return 'height:0%; background-color: ' + colors[i];
    })
    .attr('class', 'row');

    join
    .transition()
    .duration(2000)
    .style('height', function(d) {
        return (100e0 * (d / sum)) + '%';
    });
}

关于javascript - D3 中的百分比转换似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15396470/

相关文章:

javascript - 在异步函数中运行并发 HTTP 请求

javascript - 使用 Angularjs 在页面中显示文件的预览

javascript - 如何在Vue中正确设置功能组件的样式?

javascript - 如何选择清晰的颜色在 d3js 图表的条形图上绘制文本?

javascript - 为 Angular 设置 d3-tip

javascript - 在滚动条上隐藏标题

javascript - Replace() 标签在 JavaScript 中不起作用

javascript - D3 堆积条形图 : issue calculating and displaying sum/total of each bar

javascript - (倒置)立体投影上的 D3 弧未按要求显示

javascript - D3.JS 时序折线图,带实时数据,可平移缩放