如何创建动态更新样条 Highcharts 图表?

     2023-03-14     101

关键词:

【中文标题】如何创建动态更新样条 Highcharts 图表?【英文标题】:How to create dynamic update spline Highcharts chart? 【发布时间】:2019-03-08 19:31:06 【问题描述】:

我在没有运气的情况下摸索了几天。 我想创建显示数据库中数据的 Highcharts 图表。 我做了一些图表没有问题,但我卡在显示一些点(20 或更多)的图表上,并将样条图滚动到左侧显示新数据。

我创建了两个数组 jfDatumi(包含来自数据库的 hh:mm 格式的时间)(12:10) 和包含温度值 (-2.3...) 的 jfTempOuts。

现在我想在图表上显示这些数据,这些数据每秒移动一次,增加新的点(时间、温度),但当时只显示 20 个点。 当涉及到数组的末尾时,我希望图表从第一点重新开始。 就像这张图表https://www.highcharts.com/demo/dynamic-update 但我希望 X 轴从我的数组 (jfDatumi) 中显示我的时间而不是当前时间(没有 var x = (new Date()).getTime())

谁能帮帮我?因为这个,我正在拔头发。 以下是我当前的代码。

$(function () 

$(document).ready(function () 


    Highcharts.setOptions(
    


        global: 
        
            useUTC: false,

        
    );

    $('#test').highcharts(
    
        credits: 
        
            text: 'By: http://amicus.ba',
            href: 'http://amicus.ba'
        ,
    chart:
    
        type: 'spline',
        animation: Highcharts.svg, // Ne animiraj u starom IE
        marginRight: 1,

        events: 
        
            load: function () 
            

                // Postaviti update grafikona svake sekunde
                var series = this.series[0];


                setInterval(function () 
                


                    var x = jfDatumi, // Trenutno vrijeme

                    //var x = new Date(), // current time
                    //x=jfDatumi,
                    //var x = (new Date()).getTime(),
                    y = jfTempOuts;
                    series.addPoint([x, y], true, true);

                , 1500);

            

        

    ,
    title: 
    
        text: 'Test Vanjska temperatura [°C]'
    ,
    xAxis: 
    
        type: 'datetime',
        categories: jfDatumi,
        minRange: 1,
        title: 
        
            text: 'Vrijeme'
        ,
            tickPixelInterval: 1,   

    ,
    yAxis: 
    
        minRange: 0,
        title: 
        
            text: '[°C]'
        ,
        plotLines: [
        
            value: 0,
            width: 2,
            color: '#808080'
        ]
    ,
    tooltip: 
    
        formatter: function () 
        
            return '<b>' + this.series.name + '</b><br/>' +
            Highcharts.numberFormat(this.y, 2) + ' [°C]';

        
    ,

    legend: 
    
        enabled: false
    ,
    exporting: 
    
        enabled: false
    ,

    series: [
    
        name: 'Vanjska temperatura',
        //data: (jfTempOuts)


        data: (function () 
          // generate an array of random data

          var data = [],
            time = jfDatumi,
            i;

          for (i = 0; i <= 20; i += 1) 
            data.push([
              time,
              jfTempOuts
            ]);
          
          return data;
        ())


    ]
);
);
);

此时,我有来自 jfDatumi 的时间,但没有来自 jfTempOuts 的温度值。

【问题讨论】:

【参考方案1】:

我自己找到了解决方案。 这是对我有用的代码:

// Animirani grafikon vanjske temperature
$(function () 

$(document).ready(function () 


    Highcharts.setOptions(
    
        global: 
        
            useUTC: false,  
        
    );

    $('#vanjskaTemp').highcharts(
    
        credits: 
        
            text: 'By: http://amicus.ba',
            href: 'http://amicus.ba'
        ,
    chart:
    
        type: 'spline',
        animation: Highcharts.svg, // Ne animiraj u starom IE
        marginRight: 1,

        events: 
        
            load: function () 
            
                // Postaviti update grafikona po podešenom intervalu
                var series = this.series[0];

                var br=20; // Start brojača za indeksiranje niza temperatura (podešeno u: for (i = 0; i <= 20; i += 1))

                setInterval(function () 
                
                    br=br+1;  // Brojač za indeksiranje niza temperatura

                    // Zaustavljanje skrolovanja ako je dostignut kraj niza jfTempOuts
                    if (br<=jfTempOuts.length-1) 
                    
                        var x = jfSamoVrijeme; // Vrijeme za X osu (zaustavi se osa ako se ne očitava)
                        y = jfTempOuts[br]; // Vrijednosti za Y osu (Vanjske   temperature)

                        series.addPoint([x, y], true, true);
                    
                    else
                       
                        //document.write("BR:<li>"+br+"</li>");
                    

                , 1500);
            
        
    ,
    title: 
    
        text: 'Vanjska temperatura [°C]'
    ,
    xAxis: 
    
        type: 'datetime',
        categories: jfSamoVrijeme,
        minRange: 1,
        title: 
        
            text: 'Vrijeme'
        ,
            tickPixelInterval: 1,       
    ,
    yAxis: 
    
        minRange: 0,
        title: 
        
            text: 'Vanjska temperatura [°C]'
        ,
        plotLines: [
        
            value: 0,
            width: 0.5,
            color: '#808080'
        ]
    ,
    tooltip: 
    
        formatter: function () 
        
            return '<b>' + this.series.name + '</b><br/>' +
            Highcharts.numberFormat(this.y, 2) + ' [°C]';
        
    ,

    legend: 
    
        enabled: false
    ,
    exporting: 
    
        enabled: false
    ,

    series: [
    
        name: 'Vanjska temperatura',

        data: (function () 

          var data = [],
            time = jfSamoVrijeme,
            i;

          for (i = 0; i <= 20; i += 1) 
            data.push([
              time,
              jfTempOuts
            ]);
          
          return data;
        ())  
    ]
 );
 );
 );
 // Kraj animiranog grafikona vanjske temperature

我现在唯一的问题是我不能显示前 20 个点,但不是那么重要。 我也会找到解决这个问题的方法。 My chart

【讨论】:

highcharts动态图

 Highcharts动态图 每秒更新曲线图chart.eventschart.event属性中添加load方法(图表加载事件)。在1000毫秒内随机产生数据点并生成图表。chart:{events:{load:function(){//图表每秒更新一次varseries=this.series[0];setInterval(function(){varx=(newDate... 查看详情

Highcharts - 如何拥有动态高度的图表?

】Highcharts-如何拥有动态高度的图表?【英文标题】:Highcharts-howtohaveachartwithdynamicheight?【发布时间】:2012-02-0706:04:13【问题描述】:我想要一个随浏览器窗口调整大小的图表,但问题是高度固定为400像素。ThisJSFiddleexample也有同... 查看详情

如何在工具提示悬停在点 Highcharts 上动态更改图表标题 .. React JS

】如何在工具提示悬停在点Highcharts上动态更改图表标题..ReactJS【英文标题】:HowtochangethecharttitledynamicallyontooltiphoverinthepointsHighcharts..ReactJS【发布时间】:2021-09-2711:02:48【问题描述】:如何在Highcharts中悬停时动态更改图表标题JSf... 查看详情

如何在将图表导出到文件时禁用 HighCharts 重新渲染?

】如何在将图表导出到文件时禁用HighCharts重新渲染?【英文标题】:HowtodisableHighChartsre-renderingwhileexportingchartingintofile?【发布时间】:2015-09-0912:32:49【问题描述】:我在应用程序中显示highcharts-样条图。在加载页面时,它会像往... 查看详情

如何使用 jQuery UI 滑块动态更新 highcharts

】如何使用jQueryUI滑块动态更新highcharts【英文标题】:HowtodynamicallyupdatehighchartsusingjQueryUIsliders【发布时间】:2013-03-1211:44:47【问题描述】:我正在寻找一种基于jQueryUI滑块确定的值动态更新Highcharts的方法。我还不太熟悉AJAX或JSON... 查看详情

Highcharts:动态设置 y 轴最大值和最小值,而不是在创建时

】Highcharts:动态设置y轴最大值和最小值,而不是在创建时【英文标题】:Highcharts:SetyAxisMaxandMindynamically,andnotatcreation【发布时间】:2013-02-1712:15:33【问题描述】:小问题:有没有办法在创建图表后在Highcharts中设置min/max。我在图... 查看详情

使用新数据集更新 highcharts

】使用新数据集更新highcharts【英文标题】:Updatehighchartswithnewsetofdata【发布时间】:2020-09-2713:39:25【问题描述】:通过从下拉列表中多选添加新堆栈来更新堆积柱形图。我尝试做newHighcharts.chart(...)我没有得到新的筹码。当我重新... 查看详情

javascript使用highcharts的动态图表(代码片段)

查看详情

图表插件highcharts的动态化赋值,实现图表数据的动态化设置显示(代码片段)

在很早之前就介绍过图表插件Highcharts的使用了,在2014年的随笔《基于MVC4+EasyUI的Web开发框架经验总结(4)--使用图表控件Highcharts》,这里基本上都介绍的比较完整,基本的设置也没有太大的差异,本篇介绍的是基于Bootstrap开发... 查看详情

动态更新chartjs图表的值

...时间的间隔上更新值。我的问题是创建图表后,我不知道如何正确更新其值...我的代码:varctx=$("#myChart").get(0).getContext("2d");vardts= 查看详情

如何通过Websocket的数据动态更新Ngx图表的条形图

】如何通过Websocket的数据动态更新Ngx图表的条形图【英文标题】:HowtoupdateBarchartofNgx-chartsgraphdynamicallyinangularthroughtheWebsocket\'sdata【发布时间】:2019-07-0908:18:03【问题描述】:我正在创建基于角度的仪表板,仪表板包含NGX图表。... 查看详情

highcharts动态获取数据生成图表问题

 动态获取数据说白点就是从后台传值到前台,前台把这些值赋值给x轴与y轴。 柱状图的动态传值://获取后台数据varx=[];//X轴vary=[];//Y轴 varxtext=[];//X轴TEXT varcolor=["#FFB6C1","#DC143C","#C71585","#D8BFD8","#8B008B","#4B0082","#6A5ACD","#0000FF... 查看详情

Highcharts - redraw() 与新的 Highcharts.chart

】Highcharts-redraw()与新的Highcharts.chart【英文标题】:Highcharts-redraw()vs.newHighcharts.chart【发布时间】:2012-12-1512:27:44【问题描述】:我很难理解更新highcharts图表的正确方法。假设我已经渲染了一个图表,然后我想以某种方式更新它... 查看详情

Highcharts,动态设置图例高度

】Highcharts,动态设置图例高度【英文标题】:Highcharts,setlegendheightdynamically【发布时间】:2018-01-1601:30:21【问题描述】:我想动态设置图例的高度,所以当容器调整大小时,图例高度会自动调整。理想情况下,图例的高度应该是... 查看详情

highchart图表动态高度

...据其上的数量行(例如,水平条)自动动态更改(更新)highcharts图表的高度。一个元素(例如,水平条)的高度是恒定的(例如,20px)。自动设置X元素的图表高度(~20px*X)。【问题讨论】:请提供一个最小的可重现示例,您... 查看详情

无法更新 highcharts 的数据

】无法更新highcharts的数据【英文标题】:Notabletoupdatedataforhighcharts【发布时间】:2020-09-2622:27:42【问题描述】:我想在点击按钮时更新图表上的数据。我尝试过使用addSeries和redraw。两者都没有使用最新信息更新我的图表。这里出... 查看详情

如何从 Highcharts 中删除按钮

】如何从Highcharts中删除按钮【英文标题】:HowtoremovebuttonfromHighcharts【发布时间】:2012-03-2922:49:41【问题描述】:我正在使用Highcharts库创建图表,我想知道如何删除右上角的2个小按钮,哪个可以打印和下载图表,我想添加一个... 查看详情

在页面上将 Highcharts 画布渲染为 PNG

】在页面上将Highcharts画布渲染为PNG【英文标题】:RenderHighchartscanvasasaPNGonthepage【发布时间】:2012-02-1804:36:51【问题描述】:我正在使用HighCharts库来生成一些动态图表。但是,我想将HighCharts画布元素呈现为PNG图像,以便用户可... 查看详情