highcharts 使用实例

后端使用django实现,返回的数据可以修改为从数据库获取或其他方式获取,实例里是写死的数据。

urls配置:

url(r‘^outip/chart/$‘, views.charts),
url(r‘^outip/getchart/$‘, views.get_chart),
url(r‘^outip/getlast/$‘, views.get_last),
url(r‘^outip/detail/$‘, views.get_detail_chart),

所有实例浏览器访问的后端方法:charts

@csrf_exempt
def charts(request):
    return render_to_response(‘html/chart.html‘)

所有实例使用的html代码:chart.html

<html>
<head>
<meta charset="utf-8">
<style> </style>
<script type="text/javascript" src="/outip/staticfiles/js/jquery-2.1.4.js"></script>
<script type="text/javascript" src="/outip/staticfiles/highcharts/js/highcharts.js"></script>
<script type="text/javascript" src="/outip/staticfiles/highcharts/js/modules/exporting.js"></script>
<script type="text/javascript" src="/outip/staticfiles/js/activechart.js"></script>
<!-- <script type="text/javascript" src="/outip/staticfiles/js/chart.js"></script> -->
</head>
<body>
<div id="container" style="min-width:400px;height:400px"></div>
<script> </script>
</body>
</html>

1.实时刷新曲线图(若取消实时刷新,将activechart.js中 chart的events删除即可):

js代码: activechart.js

$(document).ready(function () {
        Highcharts.setOptions({
            decimalPoint: ‘.‘,    // 小数点号,例如 12.50
            thousandsSep: ‘,‘,     // 千分号,例如 12,000
            global: {
                useUTC: false
            }
        });

function getchart() {
       var datax = [];
       var datay = [];
       $.ajax({
       type: "POST",
       dataType: "json",
       url:‘/outip/getchart/‘,
       success: function(result) {
           if (result.errno == 0) {
               for(var i=0;i<result.data.length;i++) {
                   datax.push(result.data[i].x)
                   datay.push(result.data[i].y)
               };
               start(datax,datay);
               //console.log(datax);
               //console.log(t);
            }else {
                alert(‘err‘);
            }
       }
    });
}
function start(datax,datay) {
    $(‘#container‘).highcharts({
        chart: {
            type: ‘spline‘,
            animation: Highcharts.svg,
            marginRight: 10,
            events: {
                load: function () {
                    var series = this.series[0];
                    setInterval(function () {
                        $.ajax({
                            type: "POST",
                            dataType: "json",
                            url:‘/outip/getlast/‘,
                            success: function(result) {
                            if (result.errno == 0) {
                                series.addPoint([result.data.x, result.data.y], true, true);
                            } else {
                                alert(‘last err‘);
                            }
                            }
                        });
                    }, 60000);
                }
            }
        },
        title: {
            text: ‘Total flow‘,
            x: -20 //center
        },
        //subtitle: {
        //    text: ‘Source:‘,
        //    x: -20
        //},
        xAxis: {
            categories: datax
            //categories: ["2016-10-08 17:11"]
        },
        yAxis: {
            title: {
                text: ‘flow/Bytes‘
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: ‘#808080‘
            }]
        },
        credits:{
            enabled:false // 禁用版权信息
        },
        tooltip: {
            valueSuffix: ‘ Bytes‘,
            formatter:function(){
               //console.log(this);
               return this.key+‘<br>‘+Highcharts.numberFormat(this.y,‘2‘,‘.‘,‘,‘)+‘ Bytes‘;
            }
        },
        legend: {
            layout: ‘vertical‘,
            align: ‘center‘,
            verticalAlign: ‘bottom‘,
            borderWidth: 0
        },
        series: [{
            name: ‘Flow‘,
            data: datay
        }]
    });
}
getchart();
});

后端方法:

1) 获取初始数据:get_chart

@csrf_exempt
def get_chart(request):
    data = [{‘x‘:‘2016-10-08 17:11‘,‘y‘:1},{‘x‘:‘2016-10-08 17:12‘,‘y‘:3},{‘x‘:‘2016-10-08 17:13‘,‘y‘:4},{‘x‘:‘2016-10-08 17:14‘,‘y‘:400},{‘x‘:‘2016-10-08 17:15‘,‘y‘:124},{‘x‘:‘2016-10-08 17:16‘,‘y‘:2444},{‘x‘:‘2016-10-08 17:17‘,‘y‘:23334},{‘x‘:‘2016-10-08 17:18‘,‘y‘:40}]
    return HttpResponse(json.dumps({‘errno‘:0,‘data‘:data}))

2)获取最新的一个数据:get_last

@csrf_exempt
def get_last(request):
    data = {‘x‘:‘2016-10-08 17:19‘,‘y‘:100}
    return HttpResponse(json.dumps({‘errno‘:0,‘data‘:data}))

2.基础柱状图

js代码:activechart.js(datay每个元素中要有name和data两个key,且名字不能改,data的值为一个数组;若将plotOptions.column.stacking属性加上,则成为堆叠柱状图)

function getchart() {
       var datax;
       var datay;
       $.ajax({
       type: "POST",
       dataType: "json",
       url:‘/outip/detail/‘,
       success: function(result) {
           if (result.errno == 0) {
               datax = result.data.time
               datay = result.data.value
               start(datax,datay);
               //console.log(datay);
               //console.log(t);
            }else {
                alert(‘err‘);
            }
       }
    });
}
function start(datax,datay) {
    $(‘#container‘).highcharts({
        chart: {
            type: ‘column‘
        },
        title: {
            text: ‘Detail flow‘,
            x: -20 //center
        },
        credits:{
            enabled:false // 禁用版权信息
        },
        //subtitle: {
        //    text: ‘Source:‘,
        //    x: -20
        //},
        xAxis: {
            categories: datax
            //categories: ["2016-10-08 17:11"]
        },
        yAxis: {
            title: {
                text: ‘flow/Bytes‘
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: ‘#808080‘
            }]
        },
        tooltip: {
             formatter: function () {
                return this.x + ‘ Total: ‘ + Highcharts.numberFormat(this.point.stackTotal,‘2‘,‘.‘,‘,‘) +
                    ‘ Bytes<br/><b>‘ + this.series.name + ‘: ‘ + Highcharts.numberFormat(this.y,‘2‘,‘.‘,‘,‘) + ‘ Bytes</b>‘;
            },
            valueSuffix: ‘ Bytes‘
        },
        plotOptions: {
            column: {
                pointPadding: 0.2,
                borderWidth: 0,
                //stacking: ‘normal‘,
                dataLabels: {
                    enabled: true,
                    color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || ‘black‘,
                    style: {
                        textShadow: ‘0 0 3px black‘
                    }
                }
            }
        },
        /*legend: {
            layout: ‘vertical‘,
            align: ‘right‘,
            verticalAlign: ‘middle‘,
            borderWidth: 0
        },*/
        //series: [{‘name‘:‘1‘,‘data‘:[1]},{‘name‘:‘2‘,‘data‘:[3]}] /*[{
        series: datay /*[{
            name: ‘Flow‘,
            data: datay
        }]*/
    });
}
getchart();

后端方法:get_detail_chart

@csrf_exempt
def get_detail_chart(request):
    data = {‘time‘:[‘2016-10-08 17:19‘],‘value‘:[{‘name‘:‘x0‘,‘data‘:[70]},{‘name‘:‘x1‘,‘data‘:[60]},{‘name‘:‘x2‘,‘data‘:[21]},{‘name‘:‘x3‘,‘data‘:[31]},{‘name‘:‘x4‘,‘data‘:[50]},{‘name‘:‘x5‘,‘data‘:[40]},{‘name‘:‘x6‘,‘data‘:[22]},{‘name‘:‘x7‘,‘data‘:[1]},{‘name‘:‘x8‘,‘data‘:[20]},{‘name‘:‘x9‘,‘data‘:[10]},{‘name‘:‘x10‘,‘data‘:[30]}]}
    return HttpResponse(json.dumps({‘errno‘:0,‘data‘:data}))

3.堆叠柱状图

js代码:activechart.js

function getchart() {
       var datax;
       var datay;
       $.ajax({
       type: "POST",
       dataType: "json",
       url:‘/outip/getchart/‘,
       success: function(result) {
           if (result.errno == 0) {
               for(var i=0;i<result.data.length;i++) {
                   datax = result.data[i].time;
                   datay = result.data[i].value;
               };
               start(datax,datay);
               //console.log(datax);
               //console.log(t);
            }else {
                alert(‘err‘);
            }
       }
    });
}
function start(datax,datay) {
    $(‘#container‘).highcharts({
        chart: {
            type: ‘column‘
        },
        title: {
            text: ‘Total flow‘,
            x: -20 //center
        },
        //subtitle: {
        //    text: ‘Source:‘,
        //    x: -20
        //},
        xAxis: {
            categories: datax
            //categories: ["2016-10-08 17:11"]
        },
        yAxis: {
            title: {
                text: ‘flow/Bytes‘
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: ‘#808080‘
            }]
        },
        tooltip: {
            valueSuffix: ‘ Bytes‘
        },
        plotOptions: {
            column: {
                stacking: ‘normal‘,
                dataLabels: {
                    enabled: true,
                    color: (Highcharts.theme && Highcharts.theme.dataLabelsColor) || ‘white‘,
                    style: {
                        textShadow: ‘0 0 3px black‘
                    }
                }
            }
        },
        legend: {
            layout: ‘vertical‘,
            align: ‘right‘,
            verticalAlign: ‘middle‘,
            borderWidth: 0
        },
        //series: [{‘name‘:‘1‘,‘data‘:[1]},{‘name‘:‘2‘,‘data‘:[3]}] /*[{
        series: datay /*[{
            name: ‘Flow‘,
            data: datay
        }]*/
    });
}
getchart();

后端方法:get_chart

@csrf_exempt
def get_chart(request):
    data = [{‘time‘:[‘2016-10-08 17:11‘,‘2016-10-08 17:12‘],‘value‘:[{‘name‘:‘f1‘,‘data‘:[1,3]},{‘name‘:‘f2‘,‘data‘:[3,1]}]}]
    return HttpResponse(json.dumps({‘errno‘:0,‘data‘:data}))

时间: 2024-07-28 22:24:28

highcharts 使用实例的相关文章

jquery highcharts组件实例

<html> <head> <title>highcharts报表示例</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="./jquery-1.11.1.min.js"></s

highcharts 小实例 很适合初学者

<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> <title>

【HighCharts系列教程】一、认识Highcharts

一.什么是HighCharts HighCharts是网页报表工具,开发语言是Javascript HighCharts是一个简单易用.美观.跨平台.跨浏览器的图表工具 HighCharts支持图表的类型有:曲线图.柱状图.饼状图.区域图.散点图.综合图的各种图表需求.最新版2.3.5(截止2013/1/10)增加了各种仪表.时钟等类型图表 说了这么多,总之就是一句话,如果你有图表需求,选择HighCharts吧! 二.如何学习HighCharts 修改HighCharts自带的例子 了解Hig

highcharts实例教程一:结合php与mysql生成折线图

Highcharts是一款纯javascript和html5编写的图表库,不仅几乎能兼容所有pc浏览器,而且对ios和android手机端的兼容 性也不错,它能够很简单便捷的在Web网站或Web应用中添加交互性的图表,Highcharts目前支持直线图.折线图.面积图.柱状图.饼图.散点图 等多达28种不同类型的图表,还支持3D立体图表的生成,可以满足你对Web图表的任何需求 !而且Highcharts对学习者.非商业机构是免费使用的. 案例场景:要求针对技术cto网站,直观地显示一周网站pv.

HighCharts基本使用实例(入门)

HighCharts 摘要 HighCharts是眼下最为流行的图表插件,应用范围广泛,眼下支持曲线图.区域图.3D图.柱状图.饼图.散列图.混合图等,而且还支持一些拓展的特殊图表,如:仪表图.极地图.箱线图.瀑布图等.因工作中用到,所以在这里我仅仅做最主要的配置使用. 官方站点:www.highcharts.com,有兴趣的同学也能够去上面学习很多其它的内容. 使用 首先须要到下载安装包 - highcharts下载 解压,然后导入两个js文件,然后写代码.举个官网上最简单的样例: <!doc

highcharts与highstock实例

<head> <title>highcharts报表示例</title> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <script type="text/javascript" src="./js/jquery.min.js"></script> <scr

highcharts实例教程二:结合php与mysql生成饼图

上回我们分析了用highcharts结合php和mysql生成折线图的实例,这次我们以技术cto网站搜索引擎流量为例利用highcharts生成饼图. 饼图通常用在我们需要直观地显示各个部分所占的比例的时候,比如我们需要统计各大搜索引擎来的流量比例. 第一步:创建数据库保存各搜索引擎流量的pv数 CREATE TABLE `pie` (   `id` int(10) NOT NULL AUTO_INCREMENT,   `title` varchar(30) NOT NULL,   `pv` i

highCharts图表入门实例

本文通过讲解Highcharts生成一个简单的3D柱状图实例来学习Highcharts的使用. JSP 页面 1.需要引入的js文件 <script src="<%=basePath%>javascript/jquery-1.6.1.js"></script> <script src="<%=basePath%>javascript/wiassess/highCharts4.0.3/highcharts.js"&

Highcharts+Spring饼图使用实例

项目上要用到Hightcharts展示平台机器占用情况,使用这类第三方插件很方便就能实现 JSP: <script type="text/javascript" src="<%=basePath%>/resources/thirdparty/highcharts/highcharts.js"></script> <div id="machineRate" title="按产品线统计机器占比&qu