我有图表类型切换器(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 图表
谢谢