Highcharts简介

最近要做一个油田油压或温度数据的监控软件,数据会秒级写到数据库中,界面上需要动态展示数据跟随时间变化。

在网上找了很多js插件,希望能够即时高效的展示数据,最终确定了使用Highcharts插件。

Highcharts插件可以免费使用,而且可以高效的展示数据,下面先上一张效果图:


数据通过ajax每秒向数据库请求,图形跟随时间的变化向左移动。使用方法如下:

1.前台界面

 

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Highcharts Example</title>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $(document).ready(function () {
                Highcharts.setOptions({
                    global: {
                        useUTC: false
                    }
                });

                var chart;
                chart = new Highcharts.Chart({
                    chart: {
                        renderTo: 'container',
                        type: 'spline',
                        animation: Highcharts.svg, // don't animate in old IE
                        marginRight: 10,
                         backgroundColor: {
                         linearGradient: { x1: 0, y1: 0, x2: 0, y2: 1 },
                         stops: [
                            [0, 'rgb(96, 96, 96)'],
                            [1, 'rgb(16, 16, 16)']
                         ]
                      },
                      borderWidth: 0,
                      borderRadius: 15,
                      plotBackgroundColor: null,
                      plotShadow: false,
                      plotBorderWidth: 0,
                        events: {
                            load: function () { 
                                // set up the updating of the chart each second
                                var series = this.series[0];
                                var loaddata = function () {
                                    var x = (new Date()).getTime(); // current time
                                    var y = 0;
                                    $.ajax({
                                        async: false,
                                        type: "POST",
                                        dataType: "json",
                                        contentType: "application/json;charset=utf-8",
                                        url: "DataHandler.ashx", //读取数据
                                        success: function (result) {
                                            y = parseInt(result.amount);
                                        }
                                    });

                                    series.addPoint([x, y], true, true);

                                    $.ajax({
                                        type: "POST",
                                        dataType: "json",
                                        url: "AddHandler.ashx", //模拟向数据库插入数据 
                                        success: function (msg) {
                                        }
                                    });
                                };
                                setInterval(loaddata, 5000);//每5s执行一次
                            }
                        }
                    },
                    title: {
                        text: '油压数据实时监控',
                        style: { color: '#FFFF00', fontSize: '16px' }
                    },
                    xAxis: {
                        title: {
                            text: '检测时间',
                            style: { color: '#FFFF00' }
                        },  
                        type: 'datetime',
                        tickPixelInterval: 150,
                        labels: {
                            style: { color: '#FFE4B5' }
                        },
                        gridLineWidth: 1

                    },
                    yAxis: {
                        title: {
                            text: '油压(pa)',
                            style: { color: '#FFFF00' }
                        },
                        plotLines: [{
                            value: 0,
                            width: 1,
                            color: '#808080'
                        }],
                        labels: {
                            style: { color: '#FFE4B5' }
                        }
                    },
                    tooltip: {
                        formatter: function () {
                            return '<b>油压:' + Highcharts.numberFormat(this.y, 2) + '</b><br/>'
                            + '时间:' + Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x)

                        },
                         crosshairs: true
                    },
                    plotOptions: {
                        spline: {
                            marker: {
                                radius: 4,
                                lineColor: '#FFE4B5',
                                lineWidth: 1
                            }
                        }
                    },
                    legend: {
                        enabled: true
                    },
                    exporting: {
                        enabled: true
                    },
                    series: [{
                        name: '油压变化图',
                        data: (function () {
                            // generate an array of random data
                            var data = [],
                        time = (new Date()).getTime(),
                        i;

                            for (i = -19; i <= 0; i++) {
                                data.push({
                                    x: time + i * 2000,
                                    y: Math.random() * 100
                                });
                            }
                            return data;
                        })()
                    }]
                });
            });
        });
		</script>
</head>
<body>
    <script src="highcharts.src.js" type="text/javascript"></script>
    <script src="exporting.js" type="text/javascript"></script>
    <div id="container" style="min-width: 310px; height:550px; margin: 0 auto">
    </div>
</body>
</html>


2.Aajx读取数据程序:

 

 

 public class DataHandler : IHttpHandler
    {

        public void ProcessRequest(HttpContext context)
        {
            context.Response.ContentType = "text/plain";
            string test = SQLHelper.ExecuteScalar("SELECT TOP(1) amount FROM RealOil ORDER BY recordtime DESC").ToString();
            //Random ran=new Random(0);
            //test=ran.Next(15,100).ToString();
           
            string jsonString = "{\"time\":1,\"amount\":\"" + test + "\"}";

            context.Response.Write(jsonString);
        }

        public bool IsReusable
        {
            get
            {
                return false;
            }
        }
    }


 

 

posted @ 2013-08-12 19:13  pangbangb  阅读(1524)  评论(0编辑  收藏  举报