带有nvd3 / d3的MultiBar图表仅显示x轴上每隔一个刻度的标签。我怎样才能让他们全部出现?

时间:2013-06-14 04:57:50

标签: angularjs coffeescript d3.js nvd3.js

数据:

nvd3TestData = [
      {
        values:[
          {x:"M",y:1},
          {x:"T",y:2},
          {x:"W",y:3},
          {x:"R",y:3},
          {x:"F",y:4},
          {x:"S",y:5},
          {x:"U",y:6}
        ],
        key:"Apples"
      },
      {
        values:[
          {x:"M",y:5},
          {x:"T",y:2},
          {x:"W",y:6},
          {x:"R",y:8},
          {x:"F",y:2},
          {x:"S",y:4},
          {x:"U",y:1}
        ],
        key:"Zebras"
      }
    ]

创建图表(从angularjs指令中提取):

nv.addGraph - >     chart = nv.models.multiBarChart()       .stacked(真)       .showControls(假)

chart.xAxis
  .axisLabel(attrs.xAxisLabel)

chart.yAxis
  .axisLabel(attrs.yAxisLabel)
  .tickFormat(d3.format(',r'))


console.log element


d3.select(element[0].children[0])
  .datum(nvd3TestData)
  .call(chart)

nv.utils.windowResize(chart.update)

输出:

Output

预期输出将包含所有7个标签: M T W R F S U

2 个答案:

答案 0 :(得分:25)

我查看了nvd3.org并且找不到任何真实的文档,但是查看源代码,我发现https://github.com/novus/nvd3/blob/master/src/models/multiBarChart.js显示了一个布尔图表参数" reduceXTicks"注释表明它会做你想要的。我用其中一个示例图表试了一下它就可以了。具体来说,我用过:

chart
   .reduceXTicks(true)

答案 1 :(得分:1)

没有适当的文档,但您可以实现它。 只需将以下行添加到图表中即可 reduceXTicks:false

休息将随之而来。 感谢