如何根据数据改变highcharts的半径?

问题描述 投票:1回答:1

我有一个由正值和负值组成的数据要显示在一个图表中,我试图以这样的方式显示数据,正值的数据点大于负值。

<html>
    <head>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
    <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
    </head>
    <body>

        <div id="demochart"></div>
        <button id="update"> Update</button>
        <script>
            Highcharts.chart('demochart', {
                chart: {
                    type: 'scatter'
                },
                xAxis: {
                    categories: [0, 10, 20, 30, 40, 50, 60, 70, 80]
                },
                series: [{
                    name: 'Temperature',
                    data: [15, 50, -56.5, -46.5, -22.1, -2.5, -27.7, -55.7, 76.5]
                }]
            },function(chart){
                $('#update').click(function(){
                    var data = chart.series[0].data;
                    var new_array = [];
                    new_array = data;
                    console.log(new_array);
                    for(var i = 0; i < new_array.length; i++){
                        console.log("For: "+ new_array[i].y);
                        if(new_array[i].y > 0){
                                new_array[i].y = "{y:"+ new_array[i] +",marker: {radius: 10}}"
                                console.log("If: "+ new_array[i].y);
                        }else{
                            new_array[i].y = "{y:"+ new_array[i] +",marker: {radius: 4}}"
                            console.log("Else: "+ new_array[i].y);
                        }
                    }
                    chart.series[0].setData(new_array);
                })
            });
</script>
    </body>
</html>

当我点击更新按钮时,数据点值半径的大小必须被改变。

javascript highcharts
1个回答
0
投票

你可以简单地使用 update 方法来寻找符合您条件的点,并更改标记选项。出于性能考虑,最好设置 redraw 参数为 false 并在循环后重新绘制图表,以避免在每次迭代时重新绘制。

Highcharts.chart('container', {
    ...
}, function(chart) {
    $('#update').click(function() {
        var points = chart.series[0].points;

        points.forEach(function(point) {
            if (point.y > 0) {
                point.update({
                    marker: {
                        radius: 10
                    }
                }, false);
            }
        });

        chart.redraw();
    })
});

现场演示。 http:/jsfiddle.netBlackLabeljznums3L。

API参考。

https:/api.highcharts.comclass-referenceHighcharts.Point#update。

https:/api.Highcharts.comclass-referenceHighcharts.Chart#redraw。

© www.soinside.com 2019 - 2024. All rights reserved.