高图 - 将动态数据添加到栏中

时间:2017-07-05 07:06:37

标签: javascript jquery charts highcharts

我正在使用条形图。我想在已经绘制的现有条形图中添加新条形。

怎么做? 我使用了以下

chartObject.series[i].addPoint(99, true);

但没有得到结果。它会自动使用默认标签名称添加值。

我想插入一个值为A 的E栏。我怎么能这样做?

chartObject = Highcharts.chart('chartContainer', {
            chart: {
                type: 'bar'
            },
            title: {
                text: ''
            },
            xAxis: {
                categories: ["A", "B", "C", "D"],
                title: {
                    text: null
                }
            },
            yAxis: {
                min: 0,
            },

            plotOptions: {
                bar: {
                    dataLabels: {
                        enabled: true
                    }
                },
                series: {
                    cursor: 'pointer',
                    point: {
                        events: {
                            click: function () {
                                debugger


                                for (var i = 0; i < chartObject.series.length; i++) {
                                    chartObject.series[i].addPoint(99, true);

                                }

                                alert('Category: ' + this.category + ', value: ' + this.y);
                            }
                        }
                    }
                },
                showInLegend: false
            },
            legend: {
                enabled: false
            },
            credits: {
                enabled: false
            },
            tooltip: {
                enabled: false

            },
            series: [{
                showInLegend: false,
                data: [
                    50,
                    35,
                    25,
                    80
                ]
            }]
        });

1 个答案:

答案 0 :(得分:1)

请参阅此jsfiddle:http://jsfiddle.net/kkulig/rhneon2q/

我认为其中一种方便的方法是将类别定义移动到点的 name 属性:

data: [
   {y: 50, name: 'A'},
   {y: 35, name: 'B'}
]

并将xAxis类型更改为category:

type: 'category'

这里解释了:http://api.highcharts.com/highcharts/xAxis.categories

然后你可以用这样的新点更新图表:

<强>更新

代码:

chartObject.series[i].addPoint({y: this.y, name: 'E'}, true);

在系列结尾处添加带有类别的新点。

如果您想在点击后出现类别的新点,则可以使用此代码:

var data = chartObject.userOptions.series[i].data.slice(); // clone original userOptions
data.splice(this.index + 1, 0, {
  y: 10,
  name: "New cat. " + (chartObject.series[i].data.length - 2) // 2 - initial categories number
});
chartObject.series[i].update({
  data: data
});

END OF UPDATE

不幸的是,如果您像以前一样设置类别:

categories: ["A", "B", "C", "D"]
添加点的

名称属性不会被用作类别。