首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有HIGHCHARTS的addPoint (xAxis dateTime)

带有HIGHCHARTS的addPoint (xAxis dateTime)
EN

Stack Overflow用户
提问于 2015-10-30 23:53:05
回答 1查看 964关注 0票数 1

我基于本教程创建了一个实时图表。http://www.highcharts.com/docs/working-with-data/live-data

然后,当我使用nodejs和socket时,我修改了代码,但突然图形没有更新。代码如下:

代码客户端:

代码语言:javascript
复制
var chart;
var series = Array();
socket.on('ping', function(data){
    console.log(data);
      socket.emit('pong', {beat: 1})
    //console.log(i);   
requestData(data);      

    });
        function requestData(point) {
        if(point !== null){


                    //console.log('if'+point);
                    var series = chart.series[0],
                        shift = series.data.length > 60; // shift if the series is longer than 20
                    //alert(point);
                    chart.series[0].addPoint(point, true, shift);

                    //setTimeout(requestData, 5000);    
        }
}

        $(document).ready(function() {
            chart = new Highcharts.Chart({
                chart: {
                    renderTo: 'container',
                    defaultSeriesType: 'spline',
                            zoomType: 'x',
                    backgroundColor: "#333333"
                },
                        load: function(){
                    chart = this;
                    requestData();
                },
                title: {
                    text: 'Bitcoin price'
                },
                xAxis: {
                    type: 'datetime',
                    tickPixelInterval: 150,
                    maxZoom: 20 * 1000
                },
                yAxis: {
                    minPadding: 0.2,
                    maxPadding: 0.2,
                    title: {
                        text: 'Value',
                        margin: 80
                    }
                },
                series: [{
                    name: 'Bitcoin Price (Spot)',
                    data: []
                }]
            });     
        });

代码服务器:

代码语言:javascript
复制
var amount;
var dateN;
function updateChart(){
    setTimeout(updateChart, 5000);
    dateN =(Math.floor(new Date().getTime() /1000)*1000); // equal to time() in php
  client.getSpotPrice({'currency': 'USD'}, function(err, obj) {
        amount = obj.data.amount;
        });
    var info = [dateN,amount+phpjs.rand(01,99)];
    var pointd = JSON.stringify(info);
    console.log(pointd);
    //console.log(amount);
    pointd = phpjs.str_replace('"','',pointd);
    io.sockets.emit('ping', pointd);
}

io.sockets.on('connection', function (socket) {
    socket.on('pong', function(data){
        console.log("Pong received from client");
    });
});

例如,当我查看日志控制台时,我得到了well [1446218389000,323.3578]。我在php中的脚本在基地接收到的东西。

但不更新图表..如果你有主意的话?

谢谢您:)

EN

回答 1

Stack Overflow用户

发布于 2015-10-31 22:02:47

Shift接受布尔值,在你的例子中是条件

代码语言:javascript
复制
shift = series.data.length > 60; 

返回false,因为您可能会获得不大于60的点数据。所以请改用

代码语言:javascript
复制
chart.series[0].addPoint(point, true, true); //true in place of shift.
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33440000

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档