Javascript Highcharts:如何使用setData添加系列

Javascript Highcharts:如何使用setData添加系列,javascript,charts,highcharts,Javascript,Charts,Highcharts,我有一个气泡图,它与jQueryUI滑块一起工作以更改图形的内容。(“随着时间的推移”)然而,图表上的气泡每周都会在图表中出现或消失,当使用setData更新时,它会忽略最初不存在的任何新系列。我的代码: series: [{ name: 'hidden',showInLegend: false, enableMouseTracking: false, marker: { lineColor:'rgba(255,255,255,0)', fillColor: 'rgba(255,255,255,

我有一个气泡图,它与jQueryUI滑块一起工作以更改图形的内容。(“随着时间的推移”)然而,图表上的气泡每周都会在图表中出现或消失,当使用setData更新时,它会忽略最初不存在的任何新系列。我的代码:

series: [{ name: 'hidden',showInLegend: false, enableMouseTracking: false, marker: { lineColor:'rgba(255,255,255,0)', fillColor: 'rgba(255,255,255,0)', fillOpacity: 0 },
                   data: [{x:0,y:0,z:0, zz:0}]

        },{ name: 'bubble 2',showInLegend: false,
                   marker: { lineColor:'black', fillColor: { radialGradient: {cx: 0.4,cy: 0.3,r: 0.7}, stops: [ [0, 'green'], [1, 'white'] ] } },
                   data: [{x:11,y:10,z:5, zz:0}]

        },{ name: 'bubble 3',showInLegend: false,
                   marker: { lineColor:'black', fillColor: { radialGradient: {cx: 0.4,cy: 0.3,r: 0.7}, stops: [ [0, 'red'], [1, 'white'] ] } },
                   data: [{x:100,y:100,z:77, zz:0}]
        }]
如果我输入setData,比如:

newSeries[0] = [{x:0,y:0,z:0.0000000000},
{x:9,y:13,z:1,name: 'hello', marker: { fillColor: { radialGradient: {cx: 0.4,cy: 0.3,r: 0.7}, stops: [ [0, 'green'], [1, 'white'] ] } }},
{x:23,y:23,z:6,name: 'hello2', marker: { fillColor: { radialGradient: {cx: 0.4,cy: 0.3,r: 0.7}, stops: [ [0, 'green'], [1, 'white'] ] } }},
{x:23,y:49,z:6,name: 'hello3', marker: { fillColor: { radialGradient: {cx: 0.4,cy: 0.3,r: 0.7}, stops: [ [0, 'green'], [1, 'white'] ] } }},
{x:24,y:24,z:2,name: 'hello4', marker: { fillColor: { radialGradient: {cx: 0.4,cy: 0.3,r: 0.7}, stops: [ [0, 'green'], [1, 'white'] ] } }}];
hello3和hello4被完全忽略。你可以在这里看到一把小提琴,不是我的图表,而是一把可以证明问题的小提琴:

如果添加
chart.series[3].setData([4,4,4,3,3])到该图表的按钮,它被忽略

我们需要使用单独的系列,因为使用一个系列和更新数据不够灵活,无法通过setData进行更改。例如,我们需要每周更改图表中气泡的颜色。每个系列只有一个数据点


如果我在初始调用中手动添加一些“虚拟”序列,它将非常有效。我只需要Highcharts来接受这些系列,而无需声明它们。(由于气泡每周都会出现/消失)此外,我不确定setData为什么不接受我在新系列中的“hello1,hello2”名称。。。如果有人知道。

那是因为它试图设置一个不存在的序列的数据。如果添加该setData行,则会出现此错误:

未捕获的TypeError:无法读取未定义的属性“setData”

相反,您希望通过以下方式添加新系列:


我修正了你的代码以提高效率并跳过多个动画。很明显,很快就不会有更多的答案了,你的解决方案确实有效。非常感谢。如果有某种方法可以让动画与添加/移除系列一起工作,那该多好,但我理解为什么不能。动画确实可以与添加系列一起工作。你什么意思?对不起;在这里的图表中,我必须删除所有系列,然后使用addSeries重新添加它们。它们总是全新的数据。所以,我失去了我的动画。我现在明白了。当我说动画时,我指的是每个数据点之间。因此,在标准x轴上将数据点从2移动到4将使其从左向右移动。在本例中,您认为我指的是加载新数据时图表本身的动画。很抱歉给你带来了困惑。好消息是,我已经和老板谈过了,事实上,我们可以努力使数据正确地用于动画。谢谢你的帮助,沃格尔德。
$('#button').click(function () {
        chart.series[0].setData([10, 10, 10, 10, 10],false);
        chart.series[1].setData([5, 5, 5, 5, 5],false);
        chart.series[2].setData([4, 4, 4, 4, 4],false);
        chart.addSeries({
            data: [4, 4, 4, 3, 3]
        });
    });
});