zoukankan      html  css  js  c++  java
  • Chart图表整合——面积对比图、扇形图、柱状图

    一. chart图表demo网址

    网址:http://antv.alipay.com/zh-cn/f2/3.x/demo/index.html

    二. 本文主要对面积对比图,扇形图,柱状图三大常见图进行介绍

    效果图如下:

    html代码:

    <!DOCTYPE html>
    <html lang="en" dir="ltr">
        <head>
            <meta charset="utf-8">
            <title>demo</title>
            <link rel="stylesheet" href="css/index.css" />
            <script src="js/jquery-3.3.1.min.js"></script>
            <script type="text/javascript" src="js/chart.js" ></script>
            <script src="https://gw.alipayobjects.com/os/antv/assets/f2/3.2.1/f2.min.js"></script>
            <script src="https://gw.alipayobjects.com/os/antv/assets/lib/lodash-4.17.4.min.js"></script>
            <script src="https://gw.alipayobjects.com/os/rmsportal/NjNldKHIVQRozfbAOJUW.js"></script>
        </head>
        <body>
            
            <div class="instrument-panel">
                  <div class="panel-con">                 
                         <div class="panel-linear">
                                  <canvas id="linear"></canvas>
                                  <div class="consumption">
                                        <p>-库存消耗</p>
                                  </div>
                         </div>
                         <div class="panel-other">
                                  <div class="panel-pancake">
                                         <canvas id="mountNode"></canvas>
                                         <div class="product-proportion">
                                                  <p>-产品占比</p>
                                         </div>
                                  </div>
                                  <div class="panel-columnar">
                                         <canvas id="columnar"></canvas>
                                         <div class="user-map">
                                                  <p>-本月用户示意图</p>
                                         </div>
                                  </div>
                         </div>                
                  </div>
            </div>
            
        </body>
    </html>

    我们在html页面内加入三个画布标签canvas,插入面积对比图,扇形图,柱状图;

    css代码:

    .instrument-panel{
        display: flex;
        flex-direction: column;
        align-items: center;
    }
    
    .instrument-panel .panel-con{
        width: 90%;
        height: 720px;
        display: flex;
        flex-direction: column;
        align-items: center;
        margin: 65px 0px;
    }
    
    .instrument-panel .panel-con .panel-linear{
        width: 100%;
        height: 340px;
        background-color: #fff;
        margin-bottom: 40px;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
    }
    
    .panel-linear .consumption{
        position: absolute;
        left: 24px;
        top: 44px;
        color: #333;
        font-size: 18px;
    }
    
    .panel-linear canvas{
        width: 80%;
        height: 300px;
    }
    
    .instrument-panel .panel-con .panel-other{
        width: 100%;
        height: 340px;
        display: flex;
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }
    
    .panel-con .panel-other .panel-pancake{
        width: 48.5%;
        height: 340px;
        background-color: #fff;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
    }
    
    .panel-pancake canvas{
        width: 70%;
        height: 340px;
    }
    
    .panel-pancake .product-proportion{
        position: absolute;
        left: 24px;
        top: 44px;
        color: #333;
        font-size: 18px;
    }
    
    .panel-con .panel-other .panel-columnar{
        width: 48.5%;
        height: 340px;
        background-color: #fff;
        display: flex;
        align-items: center;
        justify-content: center;
        position: relative;
    }
    
    .panel-columnar canvas{
        width: 70%;
        height: 220px;
        margin-top: 40px;
    }
    
    .panel-columnar .user-map{
        position: absolute;
        left: 24px;
        top: 44px;
        color: #333;
        font-size: 18px;
    }

    重点来了,我们使用ajax接口数据实时监测数据的变化,并呈现在图表上面

    三. 接口数据形式

    1.面积对比图:

    {"state": 200, "result": [{"goodsId": 1, "sum": 0, "creatTime": "2018-08-31"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-08-31"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-01"}, {"goodsId": 2, "sum": 1, "creatTime": "2018-09-01"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-02"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-02"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-03"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-03"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-04"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-04"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-05"}, {"goodsId": 2, "sum": 1, "creatTime": "2018-09-05"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-06"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-06"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-07"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-07"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-08"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-08"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-09"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-09"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-10"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-10"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-11"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-11"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-12"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-12"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-13"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-13"}, {"goodsId": 1, "sum": 4, "creatTime": "2018-09-14"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-14"}, {"goodsId": 1, "sum": 0, "creatTime": "2018-09-15"}, {"goodsId": 2, "sum": 0, "creatTime": "2018-09-15"}]}

    2.扇形图:

    {"state": 200, "result": [{"goodsId": 2, "sum": 4}, {"goodsId": 1, "sum": 2}]}

    3.柱状图:

    {"state": 200, "result": {"sum_lastmonth": 6, "marked": 4, "unmarked": 2}}

    js代码:

    $(function() {
        linear(); //线形图
        pancake(); // 饼形图
        columnar(); //柱形图
    })
    
    function linear() {
    
        var sellerId = getCookie("sellerId");
        var sellerId = {
            "sellerId": sellerId,
        }
    
        $.ajax({
            url: "https://www.xxxxxx.cn/xxxxx/xxxxx/", //15天新用户统计
            data: sellerId,
            type: "get",
            success: function(data) {
                
                var newclient = JSON.parse(data).result;
    //            console.log(newclient);
                
                for(var i=0;i<newclient.length;i++){
                    newclient[i].creatTime=newclient[i].creatTime.slice(0,10);
                    newclient[i].goodsId=(newclient[i].goodsId+'').replace('1','格林童话');
                    newclient[i].goodsId=(newclient[i].goodsId+'').replace('2','阿里巴巴与四十大盗');
                }
                var data=newclient;
    //          console.log(data);
                var chart = new F2.Chart({
                    id: 'linear',
                    pixelRatio: window.devicePixelRatio
                });
                chart.source(data);
                chart.scale('creatTime', {
                    tickCount: 15
                });
                chart.scale('sum', {
                    tickCount: 6
                });
                chart.axis('creatTime', {
                    label: {
                       fontSize:12
                    }
                });
                chart.area().position('creatTime*sum').color('goodsId', ['#2196F3', '#DD6666']).shape('smooth');
                chart.line().position('creatTime*sum').color('goodsId', ['#2196F3', '#DD6666']).shape('smooth');
                chart.render();
    
            },error: function() {
    
            }
        })
    
    }
    
    function pancake() {
    
        var sellerId = getCookie("sellerId");
        var sellerId = {
            "sellerId": sellerId,
        }
    
        $.ajax({
            url: "https://www.xxxxxxx.cn/xxxxxx/xxxxxxx/", //报告种类统计
            data: sellerId,
            type: "get",
            success: function(data) {
                //打印出数组
                var bookresult=JSON.parse(data).result;
                var sums=0;
                for(var i=0;i<bookresult.length;i++){
                    bookresult[i].goodsId=(bookresult[i].goodsId+'').replace('1','格林童话');
                    bookresult[i].goodsId=(bookresult[i].goodsId+'').replace('2','阿里巴巴与四十大盗');
                    sums+=bookresult[i].sum;
                }
    //          console.log(sums)
                var data=bookresult;
    
                var map = {};
                data.map(function(obj) {
                    map[obj.goodsId] = Math.round((obj.sum)/sums*100) + '%';
                    
                });
    
                var chart = new F2.Chart({
                    id: 'mountNode',
                    pixelRatio: window.devicePixelRatio,
                    padding: [20, 'auto']
                });
                chart.source(data, {
                    sum: {
                        formatter: function formatter(val) {
                            return val + '%';
                        }
                    }
                });
                chart.tooltip(false);
                chart.legend({
                    position: 'right',
                    itemFormatter: function itemFormatter(val) {
                        return val + '    ' + map[val];
                    }
                });
                chart.coord('polar', {
                    transposed: true,
                    innerRadius: 0.6,
                    radius: 0.85
                });
                chart.axis(false);
                chart.interval().position('a*sum').color('goodsId', ['#2196F3', '#3DC1C7']).adjust('stack');
                
                chart.guide().html({
                    position: ['50%', '46%'],
                    html: '<div style=" 250px;height: 40px;text-align: center;">' + '<div style="font-size: 16px">总数量</div>' + '<div style="font-size: 24px">'+sums+'</div>' + '</div>'
                });    
                
                chart.render();
    
            },
            error: function() {
    
            }
        })
    
    }
    
    function columnar() {
    
        var sellerId = getCookie("sellerId");
        var sellerId = {
            "sellerId": sellerId,
        }
    
        $.ajax({
            url: "https://www.xxxxxxx.cn/xxxxx/xxxxxxx/", //近一个月用户 标记与未标记统计
            data: sellerId,
            type: "get",
            success: function(data) {
    
                //获取最近30天新增客户数
                var addperson = JSON.parse(data).result.sum_lastmonth;
                //获取未标记客户数
                var unmark = JSON.parse(data).result.unmarked;
                //获取已标记客户数
                var mark = JSON.parse(data).result.marked;
    
                var data = [{
                    sign: '最近30天新增客户数',
                    quality: addperson
                }, {
                    sign: '未标记客户数',
                    quality: unmark
                }, {
                    sign: '已标记客户数',
                    quality: mark
                }];
                var chart = new F2.Chart({
                    id: 'columnar',
                    pixelRatio: window.devicePixelRatio
                });
    
                chart.source(data, {
                    quality: {
                        tickCount: 5
                    }
                });
                chart.tooltip({
                    showItemMarker: false,
                    onShow: function onShow(ev) {
                        var items = ev.items;
                        items[0].name = null;
                        items[0].name = items[0].title;
                    }
                });
                chart.axis('sign', {
                    label: {
                       fontSize:12
                    }
                });
                chart.interval().position('sign*quality').color('sign', ['#3DC1C7', '#FCBD44', '#DD6666']);
                chart.render();
    
            },
            error: function() {
    
            }
        })
    
    }

    有什么不懂的欢迎在下面留言,一起进步。。。。。。

  • 相关阅读:
    PLSQL导入导出oracle表 表空间
    IDL(Interactive Data Language——交互式数据语言)
    easyui更改messager的OkCancel按钮为(中文)确定取消
    java 中判断字符串相等
    hql实现对表的某几个(部分)字段查询
    MyEclipse 断点打不上 提示 absent line number information
    cocos2dx-3.x 导出自定义类到 lua 过程
    cocos2d-x中DrawNode常见的图像绘制函数
    cocos2d环境及创建一个自己的项目
    cocos2d基本类介绍 director/scene/layer/sprite
  • 原文地址:https://www.cnblogs.com/hejun26/p/9646987.html
Copyright © 2011-2022 走看看