echarts-日历图

Echarts实现日历图


一、首先引入echarts.js文件

    <script src="echarts.min.js"></script>

二、指定绘制图表的容器

 <div id="main" style="width: 700px;height:280px;"></div>

三、使用Echarts进行初始化

    var myChart = echarts.init(document.getElementById('main'));

四、配置参数,绘制日历图。

实现源码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>统一号_总表</title>
    <!-- 引入 echarts.js -->
    <script src="js/echarts.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 700px;height:280px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        //提示框提示文本
        var schema = [
            {name: 'date', index: 0, text: '日期'},
            {name: 'telenumber', index: 1, text: '总话单数'},
            {name: 'telewholetime', index: 2, text: '总通话时长'},
            {name: 'telehightimes', index: 3, text: '峰值话务量'},
            {name: 'avgteletime', index: 4, text: '平均通话时长'},
            {name: 'use', index: 5, text: '员工使用率'},
            {name: 'connect', index: 6, text: '接通率'}
        ];

        // 随机生成虚拟数据
        function getVirtulData(year) {
            year = year || '2017';
            var date = +echarts.number.parseDate(year + '-01-01');
            var end = +echarts.number.parseDate(year + '-04-21');
            var dayTime = 3600 * 24 * 1000;
            var data = [];

            for (var time = date; time < end; time += dayTime) {
                var telenumber = Math.ceil(Math.random()*100);//总话单
                var telewholetime = Math.ceil(Math.random() *10)*telenumber;//总时长
                var telehightimes = Math.ceil(Math.random() *10);//峰值话务量
                var avgteletime = Math.ceil(telewholetime/telenumber);//平均通话时长
                var use = Math.random().toFixed(2);//员工使用率
                var connect = Math.random().toFixed(2);//接通率
                data.push([
                    echarts.format.formatTime('yyyy-MM-dd', time),telenumber,telewholetime,
                    telehightimes,avgteletime,use,connect
                ]);
            }
            return data;
        }

        var data = getVirtulData(2017);

        //指定图表的配置项
        option = {
            // backgroundColor: '#404a59',
            title: {
                top: 30,
                text: '2017年统一号通话信息',
                left: 'center',
                textStyle: {
                    color: '#000'
                }
            },
            tooltip : { 
                trigger: 'item',
                padding: 10,
                backgroundColor: '#222',
                borderColor: '#777',
                borderWidth: 1,
                formatter: function (obj) {
                    var value = obj.value;
                    return '<div style="border-bottom: 1px solid rgba(255,255,255,.3); font-size: 18px;padding-bottom: 7px;margin-bottom: 7px">'
                        + schema[0].text+':' +value[0] 
                        + '</div>'
                        + schema[1].text + ':' + value[1] + '次<br>'
                        + schema[2].text + ':' + value[2] + '分钟<br>'
                        + schema[3].text + ':' + value[3] + '次<br>'
                        + schema[4].text + ':' + value[4] + '分钟<br>'
                        + schema[5].text + ':' + value[5] + '<br>'
                        + schema[6].text + ':' + value[6] + '<br>';
                }
            },
            legend: { 
                top: '40',
                left: '50',
                data:['话单数', 'Top 10'],
                textStyle: {
                    color: '#000'
                }
            },
            calendar: [{
                top: 100,
                left: 'center',
                range: ['2017-01-01', '2017-06-30'],
                splitLine: {
                    show: true,
                    lineStyle: {
                        color: '#000',
                        width: 4,
                        type: 'solid'
                    }
                },
                   yearLabel: {
                    formatter: '{start}  1st',
                    textStyle: {
                        color: '#000'
                    }
                },
                itemStyle: {
                    normal: {
                        color: '#323c48',
                        borderWidth: 1,
                        borderColor: '#111'
                    }
                }
            }],
            series : [
                {
                    name: '话单数',
                    type: 'scatter',
                    coordinateSystem: 'calendar',
                    data: data,
                    symbolSize: function (val) {
                        return val[1]/5;
                    },
                    itemStyle: {
                        normal: {
                            color: '#ddb926'
                        }
                    }
                },
                {
                    name: 'Top 10',
                    type: 'effectScatter',
                    coordinateSystem: 'calendar',
                    data: data.sort(function (a, b) {
                        return b[1] - a[1];
                    }).slice(0, 10),
                    symbolSize: function (val) {
                        return val[1]/5;
                    },
                    showEffectOn: 'render',
                    rippleEffect: {
                        brushType: 'stroke'
                    },
                    hoverAnimation: true,
                    itemStyle: {
                        normal: {
                            color: '#f4e925',
                            shadowBlur: 10,
                            shadowColor: '#333'
                        }
                    },
                    zlevel: 1
                }
            ]
        };

        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>   
</body>
</html>

五、实现结果

这里写图片描述
这里写图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值