javascript - Highcharts:如何使用 setData 添加系列

标签 javascript charts highcharts

我有一个气泡图,可以与 jQuery UI slider 一起更改图表的内容。 (“通过时间”)但是,图表上的气泡可能会按周进出图表,并且在使用 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 被完全忽略。你可以在这里看到一个 fiddle ,不是我的图表,而是一个可以证明问题的 fiddle :http://jsfiddle.net/ruchitrami/YUa3R/1/

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

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

如果我在初始调用中手动添加一些“虚拟”系列,它会完美运行。我只需要 Highcharts 就可以接受这些系列,而无需我声明它们。 (随着气泡按周进出)另外,我不确定为什么 setData 不会在新系列中接受我的“hello1,hello2”名称……如果有人知道的话。

最佳答案

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

Uncaught TypeError: Cannot read property 'setData' of undefined

相反,您想通过 chart.addSeries() 添加新系列:

$('#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]
        });
    });
});

关于javascript - Highcharts:如何使用 setData 添加系列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27845961/

相关文章:

javascript - Highcharts 用 chart.renderer.path 画一条线

javascript - Highchart 饼图基础

javascript - react |虚拟 DOM 模态未显示

javascript - 如何设置 HTML 元素的样式以避免悬挂文本?

swift - 图表的 Horizo​​ntalBarChart 的左轴从顶部剪裁

c# - 如何使用 C# 更改 Y 轴最小/最大刻度值

javascript - 与 API 一起使用时,将 Date 对象存储在数据库中的最佳做法是什么

javascript - 在数组中查找对象?

c# - 在图表中动态创建系列

javascript - 当值低于前一个值时,有没有办法在 Highcharts 中动态创建情节线?