0

我试图用一个系列绘制一个列类型的图表。数据可以是正面的也可以是负面的。我尝试一键更新大于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'
    }]
}); 

这是链接http://jsfiddle.net/CkkbF/57/

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

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

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

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

4

1 回答 1

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"
                            });
                        }

                    }
                }
            }
        }
    },
于 2013-06-26T10:54:51.590 回答