2

我想要一条只显示被选中的点的线(它们实际上是预先选择的)。

在此示例中 - http://jsfiddle.net/jhG8j/ - 您可以在单击按钮时显示选定的点,但如果所有其他点都已显示(标记:启用),我只能让它工作。有没有办法从一条普通的线开始,然后只显示选定的点?

以下是来自 jsfiddle 的相关代码:

$(function () {
$('#container').highcharts({
    plotOptions: {
        line: {
            marker: {
                enabled: true
            }  
        }
    },
    series: [{
        data: [29.9, 71.5, 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]
    }]
});

// button handler
var chart = $('#container').highcharts(),
    i = 0;
$('#button').click(function() {

    if (i == chart.series[0].data.length) {
        i = 0;
    }
    chart.series[0].data[i].select(true, true);
    i++;
});

});

4

1 回答 1

3

您可以通过创建两个单独的系列来摆脱这种情况。为了使您的系列看起来像是一个折线图,您需要在数据中添加一些空值,并确保第一个系列的最后一个数据点是下一个系列的第一个数据点。

使用您提供的 jsfiddle,更新的代码如下:

$(function () {
    $('#container').highcharts({
        plotOptions: {
            line: {

            }
        },
        series: [{
            data: [29.9, 71.5, 106.4] ,
            marker: {
                enabled: true
            } ,
            color: '#000000'
        },{
            data: [null, null , 106.4, 129.2, 144.0, 176.0, 135.6, 148.5, 216.4, 194.1, 95.6, 54.4]  ,
            marker: {
                enabled: false ,
                states: {
                    hover: {
                        enabled: false   
                    } ,
                    states: {
                        select: false   
                    }
                }
            },
            color: '#000000'
        }]
    });

    // button handler
    var chart = $('#container').highcharts(),
        i = 0;
    $('#button').click(function() {

        if (i == chart.series[0].data.length) {
            i = 0;
        }
        chart.series[0].data[i].select(true, true);
        i++;
    });
});
于 2013-05-03T04:47:26.313 回答