echarts-员工看板排版设计

本文介绍了如何使用Echarts库设计员工信息看板,包括饼图、柱状图、子浮云和折线图的展示,同时讨论了布局和兼容性问题,提供了相关代码示例。
摘要由CSDN通过智能技术生成

echarts-员工看板排版设计

简述:echats是百度打造的一个纯javascript的图标库,兼容大部分浏览器,对手机端的H5也页面展示效果也不错,可以提供直观,生动,可交互,可高度个性化定制数据的可视化视图,赋予用户对数据进行挖掘,整合,分析的能力。


应用

  • 使用echarts的饼图,柱状图,子浮云,折线图做的一个员工信息展示
    废话不多说,直接上效果图这里写图片描述

代码

  • 这里在布局上唠叨一下,我使用的是3*3+2*1的布局;flex布局兼容谷歌,但是在旧版IE上不兼容,为了解决这个问题,布局改成了百分比。以下是h5,及css样式

     <div class="body-css">
        <div class="item"> </div>//3*3个item,这里只列出一个
    </div>
    .body-css{
    width:1440px;/*在ie上等比分需要具体的宽高,可以使用Jquery在js加载的时候自动计算*/
    height:1061px
    background:#000910;
    color:white;
    overflow-x:hidden;
    overflow-y:auto;
    }
    .item{
     width:31.4%;
    height:30.4%; 
    background:#30445C;
    margin:10px;
    float:left;
    }

    以下谈谈我对图形的处理

  • 1.饼图:看图片效果直接上代码
/* * 饼图  * */
 //这里在对json处理的时候传了name,integral,bgColor,unit
function createPie(name,integral,bgColor,unit){
    var pie = {
            tooltip : {
                trigger : 'item',
                formatter :function(params) {
                       var htmlStr=tipStr(params.seriesName,params.name+unit, null,params.color);
                       return htmlStr;
                   }
            },
            series : [ {
                name : name,//'总培训积分',
                type : 'pie',
                radius : [ '50%', '70%' ],
                startAngle : 225,
                avoidLabelOverlap : false,
                itemStyle : {},// 里层颜色
                label : {
                    normal : {
                        show : true,
                        position : 'center',
                        textStyle: {
                            color: 'white'
                        }
                    },
                    emphasis : {
  // 强调
                        show : true,
                        textStyle : {
                            fontSize : '15',
                            fontWeight : 'bold',
                            color : 'white',
                        }
                    }
                },
                labelLine : {
                    normal : {
                        show : false
                    }
                },
                data : [ {
                    value : 3,
                    name : integral,//'120分',
                    itemStyle : {
                        color : bgColor,
                        borderColor : 'white',
                        borderWidth : '3'
                    }
                }, {
                    value : 1,
                    name : '',
                    itemStyle : {
                        normal : {
                            color : 'rgba(0,0,0,0)'
                        }
                    }
                } // 透明度
                ]
            } ]
        };
    return pie;
}
function tipStr(titile,name,value,color){
    var htmlStr='',
    node='<span style="margin-right:5px;display:inline-block;width:10px;height:10px;border-radius:5px;background-color:'
          + color + ';"></span>';
       if(value!=null){
        htmlStr=htmlStr+node+titile+"<br/><span style='margin-left:15px;'>"+name + ':' + value+"</span>"; 
       }else{
        htmlStr=htmlStr+node+titile+"<br/><span style='margin-left:15px;'>"+name+"</span>";
       }
    return htmlStr;
}
  • 2.折线图
 /*
 * 折线图 
 * */
function createLine(flag,model,nodeBorder,nodeColor){
   var  line = {
           title : {
                text : flag=="31"?model.name:"",
                textStyle : {
                    color : 'white'
                }
            },
            tooltip : {
                trigger : 'axis',
                formatter : function(params) {
                    var value = params[0].value, text, color = params[0].color,// 图例颜色
                        htmlStr,i=0;
                    var name=params[0].name;

                    if(flag=="23"){
                           // name=name.substring(0,2)+"-"+name.substring(2,4);
                            htmlStr=tipStr(params[0].seriesName,name,value+model.unit,color);
                    }   
                    if(flag=="31"){
                        for( i=0;i<model.integralArray.length;i++){
                            if (value == model.integralArray[i]) {
                                text=model.growthlLabel[i];
                            }
                        }
                         htmlStr=tipStr(params[0].seriesName,name,text,color);
                    }
                    return htmlStr;
                }
            },
            toolbox : {
                show : false,// 工具
                feature : {
                    dataZoom : {
                        yAxisIndex : 'none'
                    },
                    dataView : {
                        readOnly : false
                    },
                    magicType : {
                        type : [ 'line', 'bar' ]
                    },
                    restore : {},
                    saveAsImage : {}
                }
            },
            xAxis : {
  // 时间
                type : 'category',
                boundaryGap : false,
                data : model.yearsArray,
                axisLine : {
                    show : true,
                    lineStyle : {
                        color : 'white'// 颜色
                    }
                },
                axisLabel : {
                    show : true
                }
            },
            grid : {
                x:50,
            },
            yAxis : {
  // 事件
                type : 'value',
                axisLabel : {
                    margin : 2,
                    show : false,
                },
                axisLine : {
  // 颜色
                    show : false,
                    lineStyle : {
                        color : 'white'
                    }
                },
                splitLine : {
                    show : false
                },
                formatter : function(value) {
                    var i, texts = [];
                    if(flag=="23"){
                        for( i=0;i<model.integralArray.length;i++){
                            texts.push(model.integralArray[i]);
                        }
                    }
                    if(flag=="31"){
                        for( i=0;i<model.integralArray.length;i++){
                            if (value == model.integralArray[i]) {
                                texts.push(model.growthlLabel[i]);
                            }
                        }
                    }
                    return texts;

                }
            },
            series : [// 数据
            {
                name : model.name,
                type : 'line',
                data : model.integralArray,
                symbolSize : 12,// 拐点大小
                symbol : 'circle',
                itemStyle : {
  // 节点颜色
                    normal : {
                        color : nodeColor,//'#00B9F9',
                        borderColor : nodeBorder,//'#055185',
                        lineStyle : {
  // 折线颜色
                            color : nodeBorder,//'#055185'
                        }
                    }
                }
            } ]
        };
  return line;
}
  • 3.柱状图
 /*
 * 柱状图
 * */
function createBar(model,colorList){
   
   var bar = {
     tooltip : {
            trigger: 'axis',
            formatter :function(params) {
   
               var htmlStr=tipStr(params[0].seriesName,params[0].name, params[0].value+model.unit,params[0].color);
               return htmlStr;
           }
        },
        xAxis : {
            type : 'category',
            data : model.yearsArray,
            axisLabel : {
                color : 'white'
            },
            splitLine : {
  // 分隔线
                show : false
            },
            axisLine : {
  // 颜色
                show : true,
                lineStyle : {
                    color : 'white'
                }
            }
        },
        yAxis : {
            type : 'value',
            axisLabel : {
                show : false,
            },
            axisLine : {
  // 颜色
                show : false
            },
            splitLine : {
                show : false
            }
        },
        series : [ {
            name:model.name,
            data : model.integralArray,//[ 120, 200, 150, 80, 70, 110, 130 ],
            type : 'bar',
            itemStyle : {
                normal : {
                    color : function(params) {
   // 首先定义一个数组
                        //return colorList[params.dataIndex];//需要提出来
                        var number=params.dataIndex+1,index=0;
                        if(number%8==0){
                            index=number/8-1;
                        }else{
                            index=number%8-1;
                        }
                        return colorList[index];//需要提出来
                    }
                }
            }
        } ]
    };
   return bar;
}
  • 4.子浮云
/*
 * 3-2 字符云
 * labelModule:为请求后台传过来的json信息
 */
function callBackLabelMdl(labelModule){
   
     var personLabel = echarts.init(document.getElementById('personLabel')),// 从前台获取id为personLabel的div
     characterClouds = {
  //创建字符云
            tooltip : {
                show : true,
                formatter :function(params) {
   
                    var htmlStr=tipStr(params.seriesName,params.name,null,params.color);
                    return htmlStr;
                }
            },
            series : [ {
                name : labelModule.name,
                type : 'wordCloud',
                size : [ '100%', '100%' ],
                //textRotation :[ 0, 45, 90, 0 ],
                rotationRange: [-60, 60],
                textPadding : 10,
                drawOutOfBound: true,
                autoSize : {
                    enable : true,
                    minSize : 1
                },
                data :labelModule.labelList,
                textStyle : {
                    normal : {
                        color:function(params){
   
                             return 'rgb(' + [
                                Math.round(Math.random() * 160),
                                Math.round(Math.random() * 160),
                                Math.round(Math.random() * 160)
                            ].join(',') + ')';
                    }
                  },
                  emphasis: {
                      shadowBlur: 10,
                      shadowColor: 'white'
                  }
                }
            } ]
        };

    personLabel.setOption(characterClouds);//给div设置option
}
  • 5.以下是后台json数据
    [
    "userBaseModule":{
        "name":"BABY",
        "WorkNumber":"05922",
        "Rank":"初级研发工程师",
        "secrecyRank":"C级",
        "station":"xxx岗位",
        "department":"xxx系统部",
        "mail":"155588787@qq.com",
        "extension":"0592-445",
        "imgPath":"./image/by.jpg",//照片需要下载提供绝对路径
    },
    "trainModule":{
        "name":"总培训积分",
        "totalIntegral":"120分",
        "yearsArray":["2012","2013","2014","2015","2016","2017","
要搭建 echarts 看板,可以使用 Pyecharts 这个库来实现。之前也有尝试过其他类似的数据可视化方式,比如 Tableau、Superset、matplotlib等,但今天主要介绍如何利用 Pyecharts 来搭建数据看板。 首先,需要下载 Pyecharts 的 assets 文件并存放到本地目录或者配置在服务器上。可以前往 https://github.com/pyecharts/pyecharts-assets 下载 assets 文件,并将其存放在相应的位置。然后,在命令行中执行以下命令以启动服务器: ``` wget https://github.com/pyecharts/pyecharts-assets/archive/master.zip cd pyecharts-assets python -m http.server ``` 这样就可以启动一个本地的服务器来提供所需的资源。 接下来,可以参考官方示例来创建看板。以创建一个销售模块的饼形图为例,可以参考官方示例链接:https://www.echartsjs.com/examples/zh/editor.html?c=pie-doughnut 在代码中,需要实例化一个 echarts 对象,并指定数据和配置。可以设置饼形图的样式、半径等属性,以及相应的数据。然后,将数据和配置赋值给 echarts 实例对象,并展示出来。 这样就可以通过 Pyecharts 搭建一个 echarts 看板了。你可以根据具体需求,选择不同的图表类型和配置来展示数据。希望这些信息对你有帮助!<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [数据分析进阶 - 使用Pyecharts搭建数据看板](https://blog.csdn.net/Totoro1745/article/details/127034850)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [数据可视化Echarts—— 案例:立可得-智能看板](https://blog.csdn.net/weixin_52819925/article/details/119838291)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值