nvd3.js如何正确地重绘图表

时间:2013-11-08 16:08:08

标签: d3.js nvd3.js

我有图表类型切换器(pieChart / lineChart),日期选择器和一个svg元素。

更改图表类型或日期会触发ajax请求(饼图/行具有不同响应数据结构的不同网址),然后重绘我的图表。像这样:

   buildReport: function (data) {
          var that = this;
          // Format incoming data to chart's format
          this.structure = this.formatters[this.type].call(this, data);
          this.svgElem.empty(); // jQuery empty 

          nv.addGraph(function () {
              var chart = nv.models[that.type](); // that.type - pieChart or lineChart

              chart.options(that.options[that.type] || {});

              d3.select(that.svgElem)
                  .datum(that.structure)
                  .transition()
                  .duration(500)
                  .call(chart);

              return chart;
          });
      }

在图表类型或日期更改时调用此函数(ajax请求可能会缓存某些条件)。使用svgElem.empty()是对的吗?或者还有另一种方法来破坏图表并绘制另一个图表?

还有一些其他问题:

1)如何在图表的中心底部绘制图例?有什么选择吗?

2)默认情况下如何在“扩展”状态下绘制堆积区域图表?我需要隐藏控件(showContols:false选项)并绘制扩展的stackedArea图表

谢谢

1 个答案:

答案 0 :(得分:1)

要使用非堆叠样式绘制图表,您可以使用

chart.style( “展开”); //用于扩展 chart.style( “流”); // for stream