Highcharts 如何避免在highstock烛台图表中使用shift动态更新时显示0,0,0,0的空白蜡烛

Highcharts 如何避免在highstock烛台图表中使用shift动态更新时显示0,0,0,0的空白蜡烛,highcharts,highstock,Highcharts,Highstock,我有一系列不连续的动态数据要绘制在蜡烛棒形图上。 有没有办法抑制空白蜡烛 在上面的提琴中,间隔b/w连续单击AddPoints按钮,显示空白蜡烛。无法100%确定这是否是空白蜡烛的原因 而且,这种情况只会发生在动态数据上,因为在不连续间隔加载时,图表上已经显示的数据可以正常工作 此外,无法理解为什么添加新点会删除现有蜡烛。时间框架的按钮也不起作用 $(function () { Highcharts.setOptions({ global : {

我有一系列不连续的动态数据要绘制在蜡烛棒形图上。 有没有办法抑制空白蜡烛

在上面的提琴中,间隔b/w连续单击AddPoints按钮,显示空白蜡烛。无法100%确定这是否是空白蜡烛的原因

而且,这种情况只会发生在动态数据上,因为在不连续间隔加载时,图表上已经显示的数据可以正常工作


此外,无法理解为什么添加新点会删除现有蜡烛。时间框架的按钮也不起作用

$(function () {

    Highcharts.setOptions({
        global : {
            useUTC : true
        }
    });

    $('#container').highcharts('StockChart', {
                        plotOptions: {
                            candlestick: {
                                color: 'red',
                                upColor: 'green'
                            }
                        },
                        rangeSelector: {
                            buttons: [
                                {
                                    count: 1,
                                    type: 'minute',
                                    text: '1M'
                                }
                                ,
                                {
                                    count: 5,
                                    type: 'minute',
                                    text: '5M'
                                },
                                {
                                    type: 'all',
                                    text: 'All'
                                }
                            ],
                            inputEnabled: false,
                            selected: 0
                        },
                        title: {
                            text: 'Live data'
                        },
                        exporting: {
                            enabled: false
                        },
                        series: [
                            {
                                type: 'candlestick',
                                name: 'Trade Data',
                                data:[
                                    [Date.now()-5000,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100],
                                     [Date.now()-3000,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100],
                                     [Date.now()-1000,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100],
                                    [Date.now(),300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100],
                                ]
                            }
                        ]
                    });

    $('#button').click(function () {
        var chart = $('#container').highcharts(),
            i = 0,
            series = chart.series[0];

        for (i; i < 1; i += 1) {
            series.addPoint([Date.now(),300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100,300 + Math.random()*100], true, true);
        }
    });
});
禁止换档工作。但我无法理解原因


使用前请先阅读API

当shift为true时,当一个点附加到序列的末尾时,一个点从序列的开始处偏移。此选项用于实时图表随时间监视值

所以,正是由于移位,您以前的数据丢失了

零数据的问题在于datetime格式。因此,如果您在图表加载3秒后点击按钮,您将获得大约3个零数据,然后显示正常数据。如果在加载数据5秒钟后按下按钮,将获得接近5零的数据。但是,如果你在固定的时间间隔内每秒钟按一次按钮,你总能得到你的数据。这也是因为移位属性。我建议使用最后一个数据的x值来添加新数据。替换:

Date.now()
为此:

chart.series[0].data[3].x + Math.random()*1000

最好的方法是作为数据提取/解析的一部分对数据进行预筛选,并且不要发送您首先要排除的值。数据已筛选,没有空值或零值。我无法理解为什么highstock正在绘制空蜡烛。此外,无法理解为什么添加新点会删除现有蜡烛…禁用转换工作。但我无法理解原因!这就是移位属性的作用。它通过在每次添加新数据点时将第一个数据点移开来保持图表上数据点的恒定数量。按钮不起作用,因为没有足够的数据让它们做任何事情。@jlbriggs感谢您清除了移位的作用,我之前认为它会自动移位以将新蜡烛带到视口中。现在,唯一剩下的疑问是为什么新添加的蜡烛大部分时间都是空白的。