将动态数据系列添加到高级图表 [英] Adding Dynamic Data Series to High charts

查看:80
本文介绍了将动态数据系列添加到高级图表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

×212414 ×123754

×212414 ×123754

我正在codebehind.aspx.cs文件中调用PageMethod,它在aspx页面的javascript代码中返回一个字符串array [],当前的问题是字符串数组返回Time(X axis-Value),Data/名称(Y轴值),类型(从Web服务中定义图表的类型(样条线或列)).我正在使用该数据将系列动态添加到图表.使用功能chart.AddSeries(),但我无法这样做.

I am calling a PageMethod in codebehind.aspx.cs file which returns me a string array[] in the javascript code in the aspx page the problem at hand is that string array returns Time(X axis-Value),Data/Name(Y axis Value),Type(Defines the type of chart (Spline or Column)) from a WEB SERVICE. I am using that data to add series dynamically to the chart. Using the function chart.AddSeries() but I am unable to do so.

任何人都可以指导我如何做到这一点,这样做之后,我想在特定系列中加分.

Can anyone please guide me how to do that and upon doing that I want to add points to the particular Series.

请注意,我将在同一图表上显示为{Spline and Column}类型.

Please Note that I would be displaying to types{Spline and Column} on the same chart.

<script type="text/javascript">


     alert("Bingo");


     $(function () {
         $(document).ready(function () {

             Highcharts.setOptions({

                 global: {

                     useUTC: false

                 }

             });



             var chart;

             chart = new Highcharts.Chart({

                 chart: {

                     renderTo: 'ltrChart',

                     type: 'spline',

                     marginRight: 10,

                     events: {

                         load: function () {


                             PageMethods.GetSingleValue(function (result) {

                                 var Name = new Array();
                                 var Type = new Array();
                                 var Data = new Array();
                                 var Time = new Array();

                                 var Ser = chart.series;

                                 for (var i = 0; i < 6; i++) {
                                     Type[i] = result[i].split('-')[0];
                                     Name[i] = result[i].split('-')[1];
                                     Data[i] = result[i].split('-')[2];
                                     Time[i] = result[i].split('-')[3];

   chart.addSeries({ name :Name[i], data : [ [Time[i], Data[i]] ] }, true, true);




                                     /* Test Method To ensure data Fetching */
                                     // alert(Type[i] + Name[i] + Data[i] + Time[i]);
                                     // alert(result[i]);


                                 }

                             })



                             //console.log(typeof PageMethods.GetSingleValue);
                             // PageMethods.GetSingleValue();
                             setInterval("PageMethods.GetSingleValue()", 5000);







                         }

                     }

                 },

                 title: {

                     text: 'Live random data'

                 },

                 xAxis: {

                 //type: 'datetime',

                 //tickPixelInterval: 150

             },

             yAxis: {

                 title: {

                     text: 'Value'

                 },

                 plotLines: [{

                     value: 0,

                     width: 1,

                     color: '#808080'

                 }]

             },

             tooltip: {

                 formatter: function () {

                     return '<b>' + this.series.name + '</b><br/>' +

                        Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) + '<br/>' +

                        Highcharts.numberFormat(this.y, 2);

                 }

             },

             legend: {

                 enabled: false

             },

             exporting: {

                 enabled: false

             },

             series: [{

                 name: 'Test Data',

                 data: [[10, 50], [15, 55]]

             }]

         });

     });

 });  
   </script>

推荐答案

这就是我所做的,并且很吸引人.在旁注中,既然您提到了aspx页面,为什么不只购买dot net highcharts库呢?如果您是点网迷,它将使生活变得更加轻松!

This is what I've done and works like a charm. On a side-note, since you mentioned aspx page, why don't you just buy the dot net highcharts library? It makes life a lot easier if you're a dot net fan!

我最初是创建一个包含5个元素的图表,然后使用迭代的" JSON序列化字符串将数据传递到客户端.遍历元素可以为我提供动态的实时图表!

I am initially creating a chart with 5 elements, and then using the "iterated" JSON serialized string to pass data to client-side. Traversing the elements gives me a dynamic live chart!

Highcharts chart = new Highcharts("livechart")
        .InitChart(new Chart
        {
            Events = new ChartEvents { Load = "ChartEventsLoad" }
        })
        .SetSeries(initialSeries)
        .SetXAxis(new XAxis { Categories = lsst.ToArray() })
        .AddJavascripVariable("iterated", iterateData.ToString())
        .AddJavascripVariable("index", "5")
        .AddJavascripFunction("ChartEventsLoad",
        @"// set up the updating of the chart each 5 seconds
        var result = iterated;
        var theseries = eval(result); // De-serializing the JSON object
        var loopseries = function() {
        var sseries = livechart.series[0]
           ,shift = sseries.data.length > 5; // shift if the series is longer than 5;
        sseries.addPoint(theseries[0].data[index], true, shift);
        var sseries1 = livechart.series[1]
        sseries1.addPoint(theseries[1].data[index], true, shift);
        index++; };
        setInterval(loopseries, 5000);")

您可以根据需要添加任意数量的系列;您可以根据需要使用循环,并且可以使用我作为函数添加的相同代码完全使用Javascript创建图表.

You can add as many series as you like; you can use a loop if needed and the same code I've added as a function can be used to create the chart completely in Javascript.

这篇关于将动态数据系列添加到高级图表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆