Highcharts:点击更新列颜色---需要鼠标悬停吗?

时间:2013-06-25 19:23:35

标签: highcharts highstock

我尝试使用一个系列绘制列类型的图表。数据可以是正面的也可以是负面的。我尝试通过一次单击更新大于0(或小于0)的点的颜色。使用以下示例:

var chart = new Highcharts.Chart({
    chart: {
        renderTo: 'container',
        type: 'column'
    },
    xAxis: {
        categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    },

    plotOptions: {
        series: {
            cursor: 'pointer',
            point: {
                events: {
                    click: function() {
                        for (var i = 0; i < this.series.data.length; i++) {
                            if (this.y < 0) {
                                if (this.series.data[i].y < 0) 
                                    this.series.data[i].update({ color: '#ECB631' }, false, false);
                            }else {
                                 if (this.series.data[i].y > 0) 
                                    this.series.data[i].update({ color: '#ECB631' }, false, false);


                            }
                        }
                    }
                }
            }
        }
    },

    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],
        negativeColor: '#FF0000'
    }]
}); 

这是the linkhttp://jsfiddle.net/CkkbF/57/

我发现了一些有趣而奇怪的东西:

  1. 如果点数据为正数,则单击的列颜色将会更改,但其他具有正数据的列的颜色会略有不同(似乎突出显示。)

  2. 如果点数据为负数,则单击的列颜色将保持不变(在我的示例中为红色),直到您将鼠标移出它。除非您尝试将鼠标放入/取出,否则其他具有负数据的列保持不变。

  3. 可能是个错误?如何正确更新它们?

1 个答案:

答案 0 :(得分:1)

我想你要更新系列颜色,或者系列negativeColor,看看:http://jsfiddle.net/CkkbF/60/

    plotOptions: {
        series: {
            cursor: 'pointer',
            point: {
                events: {
                    click: function () {
                        if (this.y > 0) {
                            this.series.update({
                                color: "#ECB631"
                            });
                        } else {
                            this.series.update({
                                negativeColor: "#ECB631"
                            });
                        }

                    }
                }
            }
        }
    },