使用plot绘制实时图表

简介: 先上图片 var dataObj = []; var dataLength = 60; var updateInterval = 3000; var options = { series: { shadowS...

先上图片

 var dataObj = [];
        var dataLength = 60;
        var updateInterval = 3000;
        var options = {
            series: { shadowSize: 0,lines: { show: true },points: { show: true } },
            grid: { hoverable: true},
            yaxis: { min: 0, max: 100 },
            xaxis: { show: false }
        };
        var plot;
        var chartId;
        var serverId;
        var myTimer;
        var previousPoint = null;
        var campArr
        //切换图表
        function switchChart(id){
            if($("#dgrd_course tr").length == 1){ return false; }
            $("div[id$='_DIV']").slideUp();
            $("#"+id+"_DIV").slideDown("fast",function(){
                    $(".headerTr img").attr("src","../Images/tubiao01.gif");
                    $("#"+id).parent().parent().find("img")[0].src = "../Images/tubiao02.gif";
                    chartId = id;
                    var res = getChartData();
                    var war = getWarnData();
                    if(id == "S_CPU"||id == "S_MEMORY"||id=="S_DISK_SYS"||id=="S_DISK_APP"){
                        options.yaxis.max = 100;
                    }else{
                        if(war[0] == undefined){
                            //此为按实时数据最大值计算纵坐标最大高度
                            var arr = $("#INPUT_"+chartId+serverId).val().split("#");
                            var max = Math.max.apply(Math,arr);
                            options.yaxis.max = max*2;
                        }else{
                            //按报警值计算最大高度
                            options.yaxis.max = war[0][1]*2;
                        }
                        
                    }
                    plot = $.plot($("#"+chartId+"_DIV"), [ {color:"#FF0000",label:"报警值",data:war},{color:"#9acd32",label:"实时值",data:res} ], options); 
                    bindHover(chartId+"_DIV");
                    clearTimeout(myTimer);
                    getServerVal();
                });
        }
        //从服务器端获取数据
        function getServerVal(){
            $.get('Mon_mon_info_manager.aspx?ACTION=GETJSON&RND'+(new Date()).getMilliseconds(), function (data) {
                    var dataAjax = $.parseJSON(data);           
                    for(var i=0;i<dataAjax.length;i++){
                        for(var key in dataAjax[i]){
                            var obj = $("#INPUT_"+key+dataAjax[i]["LIST_ID"])
                            var val = obj.val();
                            if(val != undefined){
                                if(val == ""){
                                    obj.val(dataAjax[i][key]);                                        
                                }else{
                                    obj.val(val+"#"+dataAjax[i][key]);
                                }                                    
                                if(dataAjax[i]["LIST_ID"] == serverId){
                                    $("#"+key+"_CUR").text(dataAjax[i][key]);
                                }
                            }
                        }
                    }
                    var res = getChartData();
                    var war = getWarnData();
                    plot.setData([{color:"#FF0000",label:"报警值",data:war},{color:"#9acd32",label:"实时值",data:res}]);
                    plot.draw();
                    myTimer = setTimeout(getServerVal, updateInterval);
                   
            });
        }
        //准备要显示的数据
        function getChartData(){
            var arr = $("#INPUT_"+chartId+serverId).val().split("#").reverse();
            var res = [];
            for(var i=0;i<dataLength-arr.length;++i){
                arr.push(-1);
            }
            arr = arr.reverse();
            for (var i = 0; i < dataLength; ++i){
                res.push([i, arr[arr.length-dataLength+i]])
            }
            return res;
        }
        //获取报警值
        function getWarnData(){
            var res = [];
            for(var i=0;i<campArr.length;i++){
                var subArr = campArr[i].split(">");                         
                if(subArr.length>1 && $.trim(subArr[0]) == chartId){                    
                        res.push([0,$.trim(subArr[1])]);
                        res.push([dataLength-1,res[0][1]]);
                    break;
                }
            }
            return res;
        }
        //鼠标滑上显示提示信息
        function showTooltip(x, y, contents) {
            $('<div id="tooltip">' + contents + '</div>').css( {
                position: 'absolute',
                display: 'none',
                top: y - 10,
                left: x + 10,
                border: '1px solid #fdd',
                padding: '2px',
                'background-color': '#fee',
                opacity: 0.80
            }).appendTo("body").fadeIn(200);
        }
        //每个动态生成的点的鼠标滑上事件
        function bindHover(placeId){
           $("#"+placeId).bind("plothover", function (event, pos, item) {
                if (item) {     
                        $("#tooltip").remove();
                        var y = item.datapoint[1].toFixed(2);
                        showTooltip(item.pageX, item.pageY,y);
                }
                else {
                    $("#tooltip").remove();
                }
            });
        }
        //页面载入完成
        $(function(){
            if($("#dgrd_course tr").length > 1){
                 var firstRow = $($("#dgrd_course tr")[1])
                firstRow.click();
                updateInterval = Number($("#TimeOutHF").val())*1000;  
            }          
        }); 
        //服务器列表选中一行
        function selectRow(id,camp){
                if($("tr[id^='" + id + "']").attr("class") == "selected_row"){
                    return false;
                }
                $(".selected_row").attr("class", "TableLine1");
                $("tr[id^='" + id + "']").attr("class", "selected_row");
                serverId = $.trim($(".selected_row").attr("id"));
                campArr = camp.split(" and ");
                switchChart("S_CPU");
        }

  服务器断代码

    Dim dblTotal1 As Integer = 0
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
        If Not IsPostBack Then
            If Request("ACTION") = "GETJSON" Then
                GetData()
                Return
            End If
            monManager.resetMonInfo()
            GetCircTime()
            BindGrid()
        End If

    End Sub
    '获取邮件轮训时间
    Public Function GetCircTime() As Integer
        Try
            Dim configManager As New MON.MON.MON_PARAMETER
            Dim configTable As DataTable = configManager.getMonParameter()
            TimeOutHF.Value = configTable.Rows(0)("LOG_CIRC").ToString()
        Catch ex As Exception
            lbl_message.Text = "<IMG src='../images/@warn.gif'>" & ex.Message
            Return -1
        End Try
    End Function

    Public Function BindGrid() As Integer
        Try
            Dim manager As New MON.MON.MON_SERVER_LIST
            Dim tbDetValue As DataTable = manager.getServerListInfo()
            dgrd_course.DataSource = tbDetValue
            dgrd_course.DataBind()

            For Each dr As DataRow In tbDetValue.Rows
                Dim hf As New HiddenField
                hf.ID = "INPUT_S_CPU" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_DISK_APP" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_DISK_SYS" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_MEMORY" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_FLOW_IN" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_FLOW_OUT" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_WEB_PORT" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)

                hf = New HiddenField
                hf.ID = "INPUT_S_SQL_CONNECT" & dr("LIST_ID").ToString()
                Form1.Controls.Add(hf)
            Next

            Return 1
        Catch ex As Exception
            lbl_message.Text = "<IMG src='../images/@warn.gif'>" & ex.Message
            Return -1
        End Try
    End Function
    Public Function GetData() As Integer
        Try
            Dim dt As DataTable = monManager.getMonInfo()
            Dim rs As String = JsonConvert.SerializeObject(dt)
            Response.Write(rs)
            Response.End()
            Return 1
        Catch
            Return 0
        End Try
    End Function
    Protected Sub dgrd_staff2_ItemDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.DataGridItemEventArgs) Handles dgrd_course.ItemDataBound

        If e.Item.ItemIndex < 0 Then
            Return
        End If

        Dim dr As DataRowView = CType(e.Item.DataItem, DataRowView)
        e.Item.Attributes.Add("id", dr.Row("LIST_ID").ToString())
        e.Item.Attributes.Add("onclick", "selectRow('" & dr.Row("LIST_ID").ToString() & "','" & dr.Row("camp") & "');")
        e.Item.Attributes.Add("onmouseover", "SetDataGridBackColor('LightBlue',false);")
        e.Item.Attributes.Add("onmouseout", "SetDataGridBackColor('white',true);")
    End Sub

  

目录
相关文章
|
23天前
|
数据可视化 Python
Matplotlab可视化学习笔记(二):如何绘制柱状图
使用Matplotlib库在Python中绘制柱状图的教程,包括基本的柱状图绘制和多条柱状图的绘制方法。
29 1
Matplotlab可视化学习笔记(二):如何绘制柱状图
|
23天前
|
数据可视化 Python
Matplotlab可视化学习笔记(一):如何绘制折线图
这篇博客介绍了如何使用Matplotlib库在Python中绘制折线图,包括常用颜色和线型、绘制多条折线图的方法、设置双y轴的技巧,以及如何保存和显示图表。
24 0
|
6月前
|
数据可视化 定位技术 Python
数据可视化——绘制带有时间线的柱状图
数据可视化——绘制带有时间线的柱状图
|
6月前
|
NoSQL 数据库 Python
PyQt学习(二)-----图形的建立(柱状图,折线图,堆叠柱状图,饼图)
PyQt学习(二)-----图形的建立(柱状图,折线图,堆叠柱状图,饼图)
80 1
|
6月前
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程(上)
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
477 0
|
6月前
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程(下)
【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
399 0
|
6月前
|
数据可视化 Python
使用pygal库绘制直方图、XY线图和饼状图的技术指南
使用pygal库绘制直方图、XY线图和饼状图的技术指南
62 0
|
数据可视化 数据挖掘 Linux
数据可视化丨优雅的绘制带显著性标记的箱线散点图,主要使用ggsignif和ggplot2
数据可视化丨优雅的绘制带显著性标记的箱线散点图,主要使用ggsignif和ggplot2
|
数据可视化 数据处理
R绘图案例|基于分面的折线图绘制
R绘图案例|基于分面的折线图绘制
282 0
|
开发者
pyecharts基础之柱状图的绘制
pyecharts分为v0.5.X和v1两个大版本,0.5.x 版本将不再进行维护推荐使用v1版本
108 0