Javascript Angular-nvD3在数据更改时调整图表大小

Javascript Angular-nvD3在数据更改时调整图表大小,javascript,angularjs,d3.js,nvd3.js,angular-nvd3,Javascript,Angularjs,D3.js,Nvd3.js,Angular Nvd3,我正在使用。我有一个简单的图表,如下所示: HTML: <nvd3 options="options" data="data"></nvd3> $scope.options = { chart: { type: 'pieChart', height: 450, x: function (d) { return d.key; }, y: function (d)

我正在使用。我有一个简单的图表,如下所示:

HTML:

<nvd3 options="options" data="data"></nvd3>
$scope.options = {
        chart: {
            type: 'pieChart',
            height: 450,
            x: function (d) { return d.key; },
            y: function (d) { return d.y; },
            showLabels: true,
            duration: 1100,
            showLegend: false
        }
    };
// This is the function that is called on the DOM event.
var loadAllData = function () {
    var result = getData();

    result.$promise.then(function (returnedAmounts) {
        loadChartsData(returnedAmounts.expenses, $scope.data);
    }, function (error) {
        // Error.
    });
}

var loadChartsData = function (group, chartsData) {
    // Iterate over the group
    for (var i = 0; i < group.length; i++) {
        chartsData[i] = {
            key: group[i].name || group[i].key,
            y: group[i].amount
        };
    }
}
我的数据对象只是一个简单的对象数组,具有key和y属性。在某个DOM事件中,我从服务器更新数据并更改数据对象。当我这样做时,我的图表会调整大小

为什么会发生这种情况?我该如何预防

更新:

<nvd3 options="options" data="data"></nvd3>
$scope.options = {
        chart: {
            type: 'pieChart',
            height: 450,
            x: function (d) { return d.key; },
            y: function (d) { return d.y; },
            showLabels: true,
            duration: 1100,
            showLegend: false
        }
    };
// This is the function that is called on the DOM event.
var loadAllData = function () {
    var result = getData();

    result.$promise.then(function (returnedAmounts) {
        loadChartsData(returnedAmounts.expenses, $scope.data);
    }, function (error) {
        // Error.
    });
}

var loadChartsData = function (group, chartsData) {
    // Iterate over the group
    for (var i = 0; i < group.length; i++) {
        chartsData[i] = {
            key: group[i].name || group[i].key,
            y: group[i].amount
        };
    }
}
//这是在DOM事件中调用的函数。
var loadAllData=函数(){
var result=getData();
结果.$PROMITE.then(函数(返回装载){
loadChartsData(返回的装载量、费用、范围、数据);
},函数(错误){
//错误。
});
}
var loadChartsData=函数(组,chartsData){
//遍历组
对于(变量i=0;i
尝试将您的config.deepWatchData设置为false,这样图表只有在您告诉它时才会更新。(通过使用api.refresh)


这很奇怪,你能不能检查一下,它并没有真正复制我的情况。我会更新我的问题以便你能理解。你使用的版本是什么?您是否尝试在数据加载后通过api手动更新/刷新图表?