代码之家  ›  专栏  ›  技术社区  ›  sirrocco

DimpleJS条形图样式列

  •  1
  • sirrocco  · 技术社区  · 10 年前

    我基本上使用的是: http://dimplejs.org/advanced_examples_viewer.html?id=advanced_bar_labels .

    我希望能够为每个值在左侧添加一个与值一样高的边框(为该边框添加特定颜色)。

    我真的不知道从哪里开始添加。

    有什么想法吗?

    谢谢

    更多详情:这是我想要获得的: https://dl.dropboxusercontent.com/u/2227188/Image%202.png -左边的边界是问题所在。(jsfidde.net/mkzTk/5/这是我目前拥有的东西,这与示例中的内容差不多-我不知道从何开始添加边框)

    2 回复  |  直到 10 年前
        1
  •  1
  •   John Kiernander    10 年前

    您可以在绘制系列的每个元素后附加一个矩形,如下所示:

    mySeries.afterDraw = function (s, d) {
        var shape = d3.select(s);
        svg.append("rect")
            .attr("x", shape.attr("x"))
            .attr("y", shape.attr("y"))
            .attr("height", shape.attr("height"))
            .attr("width", "10px")
            .style("fill", shape.style("stroke"))
            .style("pointer-events", "none"); 
    };
    

    您提到的示例已经使用afterDraw函数,因此只需将上面的内容添加到现有的标签方法中即可。

    它看起来不错,这里有一个例子:

    http://jsbin.com/lorin/9/edit?js,output#J:L20

        2
  •  0
  •   ckersch    10 年前

    我会根据某个数据点将每个条+边对设置为自己的组,然后添加两个 rect 元素添加到该组。颜色的差异可以用来赋予它们与众不同的颜色。

    您的代码将如下所示:

    var monthBars = d3.selectAll('.monthBar') //These will be for each chart
     .data(allMyData, idFunction) //Assign and key your data
     .enter()
     .append('g')
     .classed('monthBar', true);
     .each(function(d){
    
       var taskGroups = d3.select(this).selectAll('.taskGroup')
        .data(d.dataForThisMonth, taskIdFn)
        .enter()
        .append('g')
        .classed('.taskGroup', true);
        .attr('transform', ...) //Define the x and y positioning for the group
    
       taskGroups.append('rect')
        //Make this the 'body' rect with the text in it
    
       taskGroups.append('rect')
        //Make this the edge rect
     })