欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

可视化图表(ECharts、orgchart)

程序员文章站 2022-06-15 11:21:21
...

一、ECharts

官网:https://echarts.apache.org/examples/zh/index.html

常用的饼图、柱状图、关系图

html中js文件引入:

<link type="text/javascript" src="../eCharts-4/eCharts4.js" />

<link type="text/javascript" src="../OrgChart-master/jquery.orgchart.css" />

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
    <link type="text/javascript" src="../eCharts-4/eCharts4.js" />
    <link type="text/javascript" src="../OrgChart-master/jquery.orgchart.css" />
</head>
<body>
    <div class="chartBox">
        <!--echarts必须给宽高,不然不显示-->
        <div style="width:50%;heigth:400px" id="chart1"></div>//实心圆
        <div style="width:50%;heigth:400px" id="chart2"></div>//空心圆
        <div style="width:50%;heigth:400px" id="chart3"></div>//组-柱形图
        <div style="width:50%;heigth:400px" id="chart4"></div>//关系图1
        <div style="width:50%;heigth:400px;display:flex;justify-content:center" id="chart5"></div>//关系图1 
    </div>
</body>
</html>

1.1 饼图(实心)

function circleData(){
    $.get('linkUrl',{id:id},function(res){
        if(res.code == '0'){
            var data = res.data;
            // 规整数据,如果返回数据不合要求需要修改
            var pieData = [
                {value:data['合理'], name:'合理'},
                {value:data['不合理'], name:'不合理'}
            ];
            let option = {
                color:['#357754','#5470c6'], // 不指定颜色随机
                backgroundColor:'rgba(0,0,0,0.2)',
                // 鼠标hover效果
                tooltip:{
                    trigger:'item',
                    formatter:"{b}:{c}个({d}%)", //效果是不合理:6个(100%)
                    // 其他形式
                    /*formatter:function(params){
                        return params.value
                    }*/
                },
                title:{
                    text:'全责一至机构占比',
                    top:'bottom',
                    left:'center',
                    textStyle:{
                        fontSize:16,
                        fontWeight:'',
                        color:'#333'
                    }
                },
                series:[
                    {
                        type:'pie',
                        radius:'50%',
                        data:pieData,
                        emphasis:{
                            itemStyle:{
                                borderWidth:0,
                                shadowBlue:10,
                                shadowOffsetX:0,
                                shadowColor:'rgba(0,0,0,0.5)'
                            }
                        },
                        labelLine:{
                            normal:{
                                show:true
                            }
                        }
                    }
                ]
            };
            // 基于准备好的dom,初始化echarts实例
            var mychart = echarts.init(document.getElementById('chart1'));
            mychart.clear();
            // 使用刚指定的配置项和数据显示图表
            mychart.setOption(option)
        }
    })
};
// 调用
circleData();

1.2 空心圆

function doubleCircleData(){
    $.get('linkUrl',{id:id},function(res){
        if(res.code == '0'){
            var data = res.data;
            // 规整数据,如果返回数据不合要求需要修改
            var pieData = [
                {value:data['无效导调'], name:'无效导调'},
                {value:data['无反馈导调'], name:'无反馈导调'},
                {value:data['导调'], name:'导调'},
            ];
            let option = {
                color:['#357754','#5470c6','#0000ff'], // 不指定颜色随机
                backgroundColor:'rgba(0,0,0,0.2)',
                // 鼠标hover效果
                tooltip:{
                    trigger:'item',
                    formatter:"{b}:{c}个({d}%)", //效果是无效导调:6个(60%)
                    // 其他形式
                    /*formatter:function(params){
                        return params.value
                    }*/
                },
                title:{
                    text:'全责一至机构占比',
                    top:'bottom',
                    left:'center',
                    textStyle:{
                        fontSize:16,
                        fontWeight:'',
                        color:'#333'
                    }
                },
                series:[
                    {
                        type:'pie',
                        center:['50%','50%'],
                        radius:['30%','55%'], //内外圆大小
                        itemStyle:{   // 饼图边框颜色与粗细
                            borderWidth:1,
                            borderColor:'#fff',
                        },
                        emphasis:{
                            itemStyle:{
                                borderWidth:0,
                                shadowBlue:10,
                                shadowOffsetX:0,
                                shadowColor:'rgba(0,0,0,0.5)'
                            }
                        },
                        label:{   //饼图上的线显示的内容
                            formatter:"{b}:{c}条",
                            padding:[0, -10],
                            fontSize:14,
                        },
                        labelLine:{
                            normal:{
                                show:true
                            }
                        },
                        data:pieData
                    }
                ]
            };
            // 基于准备好的dom,初始化echarts实例
            var mychart = echarts.init(document.getElementById('chart2'));
            mychart.clear();
            // 使用刚指定的配置项和数据显示图表
            mychart.setOption(option)
        }
    })
};
// 调用
doubleCircleData();

1.3柱状图(两个一组对比)

function variedBarData(){
    $.get('linkUrl',{id:id},function(res){
        if(res.code == '0'){
            var data = res.data;
            var organizationList = [];  // 组名列表
            var notComplianceList = [];  // 组内不合理数据列表
            var ComplianceList = [];  // 组内合理数据列表
            // 规整数据,如果返回数据不合要求需要修改
            $.each(data,function(i,v){
                organizationList.push(v["organizationList_name"]);
                notComplianceList.push(v["notComplianceList"]);
                ComplianceList.push(v["ComplianceList"]);
            })
            let option = {
                backgroundColor:'rgba(0,0,0,0.2)',
                // 鼠标hover效果
                tooltip:{
                    trigger:'item',
                    formatter:"{b}-{a}:{c}个",//效果是xxxx-不合理:6个(柱形图没有{d}百分比)
                    // 其他形式
                    /*formatter:function(params){
                        return params.value
                    }*/
                },
                xAxis:{
                    type:'category',
                    data:organizationList ,
                },
                yAxis:{
                    type:'value'
                },
                title:{
                    text:'全责一至排序',
                    top:'bottom',
                    left:'center',
                    textStyle:{
                        fontSize:16,
                        fontWeight:'',
                        color:'#333'
                    }
                },
                series:[
                    {
                        name:'不合理',
                        type:'bar',
                        data: notComplianceList,
                        color:"#357754"
                    },{
                        name:'合理',
                        type:'bar',
                        data: ComplianceList,
                        color:"#5470c6"
                    },
                ]
            };
            // 基于准备好的dom,初始化echarts实例
            var mychart = echarts.init(document.getElementById('chart3'));
            mychart.clear();
            // 使用刚指定的配置项和数据显示图表
            mychart.setOption(option)
        }
    })
};
// 调用
variedBarData();

1.4关系图

function initActualRelationshipChart(){
    $.get('linkUrl',{id:sendData},function(res){
        if(res.code == 0){
            //判断返回数据标识 动态设置线条颜色
            $.each(res.data.heatSeekDtoList, function(i,v){
                if(v.val == '0'){
                    v.lineStyle = {
                        color:"#ff0000"
                    }
                }else{
                    v.lineStyle = {
                        color:"#35a3f8"
                    }
                }
            });
            var option = {
                 series:[
                    {
                        name:'实际指挥关系',
                        type:'graph',
                        layout:'force',
                        force:{
                            repulsion:550,
                            gravity:0.1
                        },
                        draggable:true,
                        roam:true,
                        fousNodeAdjacency:true,
                        animation:false,
                        label:{
                            show:true
                        },
                        zoom:1,
                        edgeSymbol:['circle','arrow'],
                        edgeSymbolSize:[4,10],
                        edgeLabel:{
                            show:false
                        },
                        symbolSize:30,
                        data:res.data.heatSeekDataDtoList,
                        links:res.data.heatSeekDtoList,
                        itemStyle:{
                            color:'#f87535'
                        },
                        lineStyle:{
                            width:3,
                            curveness:0.1
                        }
                    }
                ]
            };
            // 基于准备好的dom,初始化echarts实例
            var mychart = echarts.init(document.getElementById('chart4'));
            mychart.clear();
            // 使用刚指定的配置项和数据显示图表
            mychart.setOption(option)
             mychart.off('click');
            //点击事件
            mychart.on('click',function(params){
                var source = params.source;
                var target = params.target;
                // 重载表格
                table.reload("table的id",{
                    url:"tableUrl",
                    where:{source:source?source:'',target:target},
                })
            })
        }
    })
}
initActualRelationshipChart();

二、orgchart

官网地址:https://www.jq22.com/jquery-info21894

js需要先扩充模块,再调用

layui.config({
    base:'./layui-v2.5.6/lay/modules'
}).extend({
    orgChart:'orgChart'
});
layui.use(['jquery','orgchart'], function(){
    var $ = layui.jquery;
    var orgchart = layui.orgchart;
    // 通过缓存获取数据
    var taskId = sessionStorage.getItem("taskId");
    // 创建缓存:sessionStorage.setItem("conductId","taskId");
    // 销毁缓存:sessionStorage.removeItem("taskId")
    initOrganizationChart();
    function initOrganizationChart(){
        $.post('linkUrl',{conductId:taskId},function(res){
            if(res.code == '0'){
                $("#chart5").html('');
                $("#chart5").orgchart({
                    'nodeTitle': 'organizationName',
                    'draggable':false,
                    'data':res.data.length>0?res.data[0]:{}
                });
                // orgChart点击事件
                $('#chart5').off().click(function(){
                    var organizationName = $(this).html();
                    // 当前点击的节点名称变为红色
                    $('.orgchart .title').css('color'.'#fff');
                });
                // 默认选择第一个节点
                $('#chart5 .orgchart tbody tr').eq(0).find('div .title').click()
            }
        })
    }
})