2

我正在使用 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 的值是不可见的。我不想为整个数据系列启用全局标记。还有其他解决方案吗?

4

3 回答 3

3

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

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

然后你只需要启用你想要的标记(一月和三月)。

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

    null,

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

    ...

}]

演示

于 2013-05-24T18:42:24.863 回答
1

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

示例代码:

data: [{
                y: 29.9,
                marker: {
                    lineWidth: 2
                }
            }, {
                y: null,
                marker: {
                    enabled: false
                }
            },....
于 2013-05-24T16:25:49.160 回答
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();
    }
于 2013-05-27T08:56:14.760 回答