在Protovis中绘制负数的正确方法是什么?

时间:2011-07-21 20:54:01

标签: javascript charts protovis

对于最简单的用例,条形图的值介于-10到10之间,如何使用Protovis JavaScript图表库干净地编码?

干净地,我的意思是使轴居中,显示x和y轴标签,并表示图表的列值,其中负值低于y轴,正值超过y轴。

1 个答案:

答案 0 :(得分:2)

以下是一个有效的例子:http://jsfiddle.net/nrabinowitz/yk5By/3/

其中重要部分如下:

  • 使x轴刻度从最小值变为最大值(在您的情况下,它将是pv.Scale.linear(-10,10).range(0,w);在我的示例中,我根据数据计算最小值和最大值)。

  • 将条的宽度基于数据的绝对距离0:

    .width(function(d) { return Math.abs(x(d) - x(0)); })
    
  • 然后根据数据是正还是负来调整.left()属性:

    .left(function(d) { return d > 0 ? x(0) : x(0) - this.width(); });
    
  • 因为我们使用的是简单的x轴刻度,所以添加轴标签非常简单:

    vis.add(pv.Label)
        .data(x.ticks()) // you could also use pv.range(min, max, 1) here
        .left(x);