0

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

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

   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) 如何在“Expanded”状态下默认绘制堆积面积图?我需要隐藏控件(showContols: false 选项)并绘制展开的stackedArea 图表

谢谢

4

1 回答 1

1

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

chart.style("展开"); // 对于扩展的 chart.style("stream"); // 对于流

于 2014-01-06T23:20:56.560 回答