有没有办法在渲染后用新数据更新径向(或圆形)条形图?

Is there a way to update with new data a Radial (or Circular) bar chart after rendering?

我想显示径向(或圆形)柱状高图 https://www.highcharts.com/docs/chart-and-series-types/radial-bar-chart

由于数据的计算时间较长,我想先显示图表,然后在准备好后更新数据。

默认绘制没有值的图表,但经过一些耗时的计算后会更新。我试过如下没有徒劳。

我尝试使用 radialGraph.series.update();函数但出现错误 Uncaught TypeError: radialGraph.series.update is not a function.

有人知道怎么做吗?谢谢。

// Loads default values

radialGraph = Highcharts.chart('container', {
    colors: ['#FFD700', '#C0C0C0', '#CD7F32'],
    chart: {
        type: 'column',
        inverted: true,
        polar: true
    },
    title: {
        text: 'Winter Olympic medals per existing country (TOP 5)'
    },
    tooltip: {
        outside: true
    },
    pane: {
        size: '85%',
        innerSize: '20%',
        endAngle: 270
    },
    xAxis: {
        tickInterval: 1,
        labels: {
            align: 'right',
            useHTML: true,
            allowOverlap: true,
            step: 1,
            y: 3,
            style: {
                fontSize: '13px'
            }
        },
        lineWidth: 0,
        categories: [
            'Norway <span class="f16"><span id="flag" class="flag no">' +
            '</span></span>',
            'United States <span class="f16"><span id="flag" class="flag us">' +
            '</span></span>',
            'Germany <span class="f16"><span id="flag" class="flag de">'  +
            '</span></span>'
        ]
    },
    yAxis: {
        crosshair: {
            enabled: true,
            color: '#333'
        },
        lineWidth: 0,
        tickInterval: 25,
        reversedStacks: false,
        endOnTick: true,
        showLastLabel: true
    },
    plotOptions: {
        column: {
            stacking: 'normal',
            borderWidth: 0,
            pointPadding: 0,
            groupPadding: 0.15
        }
    },
    series: [{
        name: 'Gold medals',
        data: [0, 0, 0]
    }, {
        name: 'Silver medals',
        data: [0, 0, 0]
    }, {
        name: 'Bronze medals',
        data: [0, 0, 0]
    }]
});



// After some time-consuming computations, update the series data with the below sample.

    radialGraph.series.update([{
        name: 'Gold medals',
        data: [132, 105, 92]
    }, {
        name: 'Silver medals',
        data: [125, 110, 86]
    }, {
        name: 'Bronze medals',
        data: [111, 90, 60]
    }]);
    
    // I tried updating as above but keep getting: Uncaught TypeError: radialGraph.series.update is not a function
<script src="https://code.highcharts.com/highcharts.js"></script>
<script src="https://code.highcharts.com/highcharts-more.js"></script>



<link rel="stylesheet" href="https://github.com/downloads/lafeber/world-flags-sprite/flags16.css" />

<figure class="highcharts-figure">
    <div id="container"></div>
    
</figure>

series 属性 是一个数组。要更新它,您可以使用 chart.update 方法:

    radialGraph.update({
        series: [{
            name: 'Gold medals',
            data: [132, 105, 92]
        }, {
            name: 'Silver medals',
            data: [125, 110, 86]
        }, {
            name: 'Bronze medals',
            data: [111, 90, 60]
        }]
    });

现场演示: http://jsfiddle.net/BlackLabel/09um5nr8/

API参考:https://api.highcharts.com/class-reference/Highcharts.Chart#update


或通过series.setDataseries.update方法更改每个系列的数据:

    const series = radialGraph.series;
    
    series[0].setData([132, 105, 92], false);
    series[1].setData([125, 110, 86], false);
    series[2].setData([111, 90, 60]);

现场演示: http://jsfiddle.net/BlackLabel/xws8a5co/

API参考:https://api.highcharts.com/class-reference/Highcharts.Series#setData