Highcharts-多条折线图(静态、动态)

1:引入加包Highcharts-2.2.5
2:jsp中引入

<script type="text/javascript" src="${pageContext.request.contextPath}/res/Highcharts-2.2.5/js/jquery.heighcharts.min.js" charset="utf-8"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/res/Highcharts-2.2.5/js/highcharts.src.js" charset="utf-8"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/res/Highcharts-2.2.5/js/modules/exporting.src.js" charset="utf-8"></script>

3:多线折线图-图例

javascript代码:

$(function () {
    $('#container').highcharts({
        title: {
            text: 'Monthly Average Temperature',
            x: -20 //center
        },
        subtitle: {
            text: 'Source: WorldClimate.com',
            x: -20
        },
        xAxis: {
            categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun','Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
        },
        yAxis: {
            title: {
                text: 'Temperature (°C)'
            },
            plotLines: [{
                value: 0,
                width: 1,
                color: '#808080'
            }]
        },
        tooltip: {
            valueSuffix: '°C'
        },
        legend: {
            layout: 'vertical',
            align: 'right',
            verticalAlign: 'middle',
            borderWidth: 0
        },
        series: [{
            name: 'Tokyo',
            data: [7.0, 6.9, 9.5, 14.5, 18.2, 21.5, 25.2, 26.5, 23.3, 18.3, 13.9, 9.6]
        }, {
            name: 'New York',
            data: [-0.2, 0.8, 5.7, 11.3, 17.0, 22.0, 24.8, 24.1, 20.1, 14.1, 8.6, 2.5]
        }, {
            name: 'Berlin',
            data: [-0.9, 0.6, 3.5, 8.4, 13.5, 17.0, 18.6, 17.9, 14.3, 9.0, 3.9, 1.0]
        }, {
            name: 'London',
            data: [3.9, 4.2, 5.7, 8.5, 11.9, 15.2, 17.0, 16.6, 14.2, 10.3, 6.6, 4.8]
        }]
    });
});

4:动态实现代码
这里写图片描述
定义chart

var chart = Ext.create('Ext.panel.Panel', {
                height : 320,
                title : "多开统计",
                html : '<div id="container"></div>'
            });
chart = new Highcharts.Chart({
                chart : {
                    renderTo : 'container',
                    type : 'line',
                    height : 300
                },
                title : {
                    text : "多开统计"
                },
                xAxis : {
                    categories : []
                },
                yAxis : {
                    title : {
                        text : '数量'
                    },
                    min : 0
                },
                exporting : {
                    enabled : false
                },
                tooltip : {
                    formatter : function() {
                        return '<b>' + this.series.name + '</b><br>' + '日期:'
                                + this.x + '<br>数量:' + this.y;
                    }
                }
            });
function tochart() {
        // 获取查询条件
        var fp = queryForm;
        var queryParam = {};
        var date = fp.getForm().getValues()["date"];
        queryParam["date"] = date;
        var n = fp.getForm().getValues()["n"];
        queryParam["n"] = n;//传参date&n
        // 查询后台数据
        Ext.Ajax.request({
            url : WebPath + '/baobiao/findDuoKai',
            params : queryParam,
            method : "POST",
            success : function(response) {
                // 转换数据反回值为对象
                var datas = Ext.decode(response.responseText);
                if (datas["total"] < 0) {
                    return;
                }
                // 清空chart内的数据
                var size = chart.series.length;
                for (var i = 0; i < size; i++) {
                    chart.series[0].remove();
                }
                // 排序
                datas["rows"].sort(function(a, b) {
                            a = a['date'].split('-');
                            b = b['date'].split('-');
                            return Date.UTC(a[0], a[1], a[2])
                                    - Date.UTC(b[0], b[1], b[2]);
                        });
                // 获取 开始日期 和 结束日期
                var begin = CTU.Utils.parseDate(queryParam['date'][0]);
                var end = CTU.Utils.parseDate(queryParam['date'][1]);
                var categories = [];
                // 选中数据中去除重复项
                var n = CTU.Utils.arrayUnique(queryParam['n']);
                var names = [];//每个线条的名字
                Ext.Array.each(datas["rows"], function(item, b) {
                            var find = 0;
                            for (var k = 0; k < names.length; k++) {
                                if (names[k] == item['name']) {
                                    find = 1;
                                }
                            }
                            if (find == 0) {
                                names.push(item['name']);
                            }
                        });
                // 设置X轴范围
                for (var i = begin; i <= end; i = i + 3600000 * 24) {
                    categories.push(Ext.Date.format(new Date(i), 'Y-m-d'));
                }
                chart.xAxis[0].setCategories(categories);
                // 设置数据内容
                Ext.Array.each(names, function(name, b) {

                            var resultObj = {};
                            resultObj['name'] = name;
                            resultObj['data'] = [];
                            for (var i = begin; i <= end; i = i + 3600000 * 24) {
                                var isFind = 0;
                                Ext.Array.each(datas["rows"],
                                        function(item, b) {
                                            if (name == item['name']
                                                    && i == CTU.Utils
                                                            .parseDate(item['date'])) {
                                                resultObj['data']
                                                        .push(item['count']);
                                                isFind = 1;
                                            }
                                        });
                                if (isFind == 0) {
                                    resultObj['data'].push(0);
                                }
                            }
                            chart.addSeries(resultObj);
                        });
            }
        });
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值