仅在HIghchart的折线图中显示单独值的标记

时间:2013-05-24 16:06:12

标签: highcharts highstock

我正在使用Highstock绘制折线图,​​我想知道是否有可能只将标记添加到“分离”点(即没有直接邻居的点)中。如果标记被禁用,则无法看到这些点。

我的意思是数据喜欢这个:

    series: [{
        data: [29.9, null, 106.4, null, 144.0, 176.0, null, 148.5, 216.4, 194.1, 95.6, 54.4],
    }]

如果你看一下这个小提琴:http://jsfiddle.net/hvCFD/你会看到,没有鼠标悬停,Jan和Mar的值是不可见的。我不想为整个数据系列全局启用标记。还有其他解决方案吗?

3 个答案:

答案 0 :(得分:1)

首先,您可以通过以下代码禁用所有标记:

plotOptions: {
    line: {
        marker: {
            enabled: false
        }
    }
}

然后你只需启用你想要的标记(jan和mar)。

series: [{
    data: [
    // january
    {
        y: 29.9,
        marker: {
            enabled: true
        }
    },

    null,

    // march
    {
        y: 106.4,
        marker: {
            enabled: true
        }
    },

    ...

}]

Demo

答案 1 :(得分:1)

您可以启用所有标记,并准备自己的功能,以识别标记是否具有下一个元素。然后显示/隐藏适当的svg元素。

http://jsfiddle.net/hvCFD/3/

 var data = chart.series[0].data,
        len = data.length,
        i = 0;
    for(i;i<len;i++) {

        if((typeof(data[i+1]) != "undefined") && (data[i+1].y!=null) && (data[i-1].y!=null) && (data[i].y!=null))
            data[i].graphic.destroy();
    }

答案 2 :(得分:0)

是的,您可以为每个点设置marker属性。并非您必须在图表中全局允许标记。请参见示例here

示例代码:

data: [{
                y: 29.9,
                marker: {
                    lineWidth: 2
                }
            }, {
                y: null,
                marker: {
                    enabled: false
                }
            },....