大数据可视化 可爱教主波奇酱

目录

一.代码实现图

静态效果

动态效果一

动态效果二

二.实现代码

三.代码介绍

一.主题切换

二.饼图动态动画

三.多表联动

四.交互效果--触发

五.异步加载

第一种.没有外部数据,直接把数据写进setOption

第二种.有外部数据,表是在同级目录下,get(写入表名)

六.加载动画


一.代码实现图

静态效果

动态效果一

动态效果二

二.实现代码

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<!--主题样式-->
<script src="js/echarts521.js"></script>
<script src="js/jquery-3.3.1.js"></script>
<script src="js/macarons.js"></script>
<script src="js/dark.js"></script>
<script src="js/essos.js"></script>
<!--主题样式-->

<style>/*div间隔与横向联动设置*/
    .c1 {
        background-image: url('image/01.jpg');
        background-size: cover;
        background-repeat: no-repeat;
    }
    #selection {
        background: linear-gradient(45deg, rgb(212, 145, 145,0.5),  rgb(238, 130, 238));
        color: rgb(185, 117, 129);/*设置选择框中文字的颜色为粉色*/
        border: 3px solid gray;/*边框样式*/
        border-color: rgba(198, 112, 209, 0.8);
        border-radius: 10px; /* 设置边框的圆角半径,值为选择框高度的一半 */
        padding: 0px;/*设置选择框内部的内边距为5像素*/
        font-size: 16px;/* 设置选择框中文字的字体大小为16像素*/
        cursor: pointer;/*设置指针悬停在选择框上时的鼠标样式为手型*/
    }
</style>

</head>


<body>
    
    <!-- 盒子 -->
    <div class="c1" style="width: 600px;height: 800px;">
        <div><!-- 下拉列表 -->
            <select id="selection">
                <option value="macarons">macarons</option>
                <option value="essos">essos</option>
                <option value="dark">dark</option>
                <option value="echarts521">还原</option>
            </select>
        </div><!-- 下拉列表 -->
        <div id="a1" style="width: 600px;height: 400px;"></div>
        <div id="a2" style="width: 600px;height: 400px;"></div>
    </div>
    <!-- 盒子 -->



    <script type="text/javascript">
 // 水印
    var name="liushuai";
    var canvas=document.createElement('canvas');
    var ctx=canvas.getContext('2d');
    canvas.width=canvas.height=100;
    ctx.textAlign='center';
    ctx.textBaseline='middle';
    ctx.globalAlpha=0.08;
    ctx.font='10px Microsoft Yahei'
    ctx.translate(50,50)
    ctx.rotate(-Math.PI/4)
    ctx.fillText(name,0,12);
// 水印



    var myChar1=echarts.init(document.getElementById('a1'));
    var myChar2=echarts.init(document.getElementById("a2"));
   
    myChar1.setOption({})

    myChar1.showLoading({
        text:'请稍等片刻',
        effect:'bubble',
        icon:'图例',
        maskColor:'white'

    }); 

    myChar1.setOption({  
        color:['#6A0DAD','#FFFACD','#87CEFA','#FFA500','#808080'],
        backgroundColor:{type:'pattern',image:canvas,repeat:'repeat'},//水印
        title:{               //标题
            text:'院校历年招生',
        },
        tooltip:{
            trigger:'axis',
            textStyle: {
            shadowColor: 'rgba(0, 0, 0, 0.3)',
            shadowBlur: 10,
            shadowOffsetX: 0,
            shadowOffsetY: 2,
            },
        },
        legend:{              //图例组件
            data:['普招计划','网报人数'],
        },
        toolbox:{
            show:true,
            feature:{
                mark:{show:true},
                DataView:{sho:true,readOnly:false},
                magicType:{show:true,type:['line','bar']},
                restore:{show:true},
                saveAsImage:{show:true},
            },
        },
        xAxis:[
        {
            type:'category',
            data:['2024(29.59%)','2023(24.17%)','2022(32.19%)','2021(41.58%)','2020(51.33)'],

        },
        ],
        yAxis:[
        {
            type:'value',
            boundaryGap:[0,0.4],//坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样
        },
        ],
        dataZoom:[//区域缩放组建
            {
                type:'inside',
                show:true,
                start:0,//开始位置
                end:100,//结束位置
            }
        ],
        series:[
        {
            name:'普招计划',
            type:'bar',
            data:[501,886,1008,867,1023],
        },{
            name:'网报人数',
            type:'bar',
            data:[1695,3665,3131,2085,1993],
        },
        ],
      }
  )
  setTimeout(function(){
    myChar1.hideLoading();
  },1000);
    





//  myChar2.setOption({})
 myChar2.showLoading({
        text:'请稍等片刻',
        effect:'bubble',
        color:'red',
        maskColor:'white'

    });
//  异步加载
 myChar2.setOption({ 
        color:['#6A0DAD','#FFFACD','#87CEFA','#FFA500','#808080'],
        backgroundColor:{type:'pattern',image:canvas,repeat:'repeat'},
        title:{               //标题
            text:'2022年湖北师范大学招生计划(普通考生)',
        },
        tooltip:{
            trigger:'item',
            formatter:"{a}<br/>{b}:{c}({d}%)",//文本布局
            
        },
        legend:{   
            type:'scroll',
            height :40,           //图例组件
            x:10,
            y:30,
            // borderWidth:1,
             width:150,
            data:['学前教育','小学教育','国际经济与贸易','社会工作','社会体育指导与管理'],
        },
        series:[
            {   
                cursor:'crosshair',//设置经过扇区鼠标形状为十字
                legendHoverLink:false,//是否启用图例 hover 时的联动高亮
                name:'普通考生',
                type:'pie',
                radius:'66%',//饼图的半径。
                //max:10,
                // radius:['50%','60%'],//饼图的半径。可以为如下类型
                itemStyle:{
                    normal:{
                        labelLine:{
                            show:true,
                            length:20,
                            lineStyle:{
                                width:1
                            }
                        }
                    }
                },
                center:['58%','55%'], //饼图的中心(圆心)坐标,数组的第一项是横坐标,第二项是纵坐标。
                clockWise:true,//饼图的扇区是否是顺时针排布
                data:[
                    {value:75,name:'学前教育'},
                    {value:54,name:'小学教育'},
                    {value:25,name:'国际经济与贸易'},
                    {value:38,name:'社会工作'},
                    {value:29,name:'社会体育指导与管理'},
                ]
            }
        ]
      })
 
    setTimeout(function(){
    myChar2.hideLoading();
  },1000);
//主题切换
 $('#selection').change(function(){
    myChar1.dispose();
    let yourtheme=$(this).val();
    myChar1=echarts.init(document.getElementById('a1'),yourtheme);
    myChar1.setOption({  
        color:['#6A0DAD','#FFFACD','#87CEFA','#FFA500','#808080'],
        backgroundColor:{type:'pattern',image:canvas,repeat:'repeat'},//水印
        title:{               //标题
            text:'院校历年招生',
        },
        tooltip:{
            trigger:'axis',
            textStyle: {
            shadowColor: 'rgba(0, 0, 0, 0.3)',
            shadowBlur: 10,
            shadowOffsetX: 0,
            shadowOffsetY: 2,
            },
        },
        legend:{              //图例组件
            data:['普招计划','网报人数'],
        },
        toolbox:{
            show:true,
            feature:{
                mark:{show:true},
                DataView:{sho:true,readOnly:false},
                magicType:{show:true,type:['line','bar']},
                restore:{show:true},
                saveAsImage:{show:true},
            },
        },
        xAxis:[
        {
            type:'category',
            data:['2024(29.59%)','2023(24.17%)','2022(32.19%)','2021(41.58%)','2020(51.33)'],

        },
        ],
        yAxis:[
        {
            type:'value',
            boundaryGap:[0,0.4],//坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样
        },
        ],
        dataZoom:[//区域缩放组建
            {
                type:'inside',
                show:true,
                start:0,//开始位置
                end:100,//结束位置
            }
        ],
        series:[
        {
            name:'普招计划',
            type:'bar',
            data:[501,886,1008,867,1023],
        },{
            name:'网报人数',
            type:'bar',
            data:[1695,3665,3131,2085,1993],
        },
        ],
      }
  );
    myChar1.resize();//图表自适应窗口大小
})
//主题切换

// 多表联动
echarts.connect([myChar1, myChar2]);
// 多表联动

//触发
 myChar2.on('click',function(params){
    window.alert('不要乱点:'+params.name)
    window.alert('DDDD'+params.name)//提示框
    window.open('https://www.baidu.com');//链接
});
//触发


//交互触发
myChar1.on('datazoom',function(params){
    console.log(params)//打印params
    var startValue=myChar1.getModel().option1.dataZoonm[0].startValue;
    var endValue=myChar1.getModel().option1.dataZoonm[0].endValue;
    var startPercent=myChar1.getModel().option1.dataZoonm[0].start;
    var endPercent=myChar1.getModel().option1.dataZoonm[0].end;
    console.log(startPercent,startValue,endPercent,endValue);
    option1.dataZoom[0].start=startPercent;
    option1.dataZoom[0].end=endPercent;
})
//交互触发

//自动循环动画效果
// 自动循环动画效果
var isSet = true; // 是否启动循环标志
var currentIndex = -1; // 当前高亮的索引

function charHover() {
    var dataLen = myChar2.getOption().series[0].data.length; // 获取数据长度
    myChar2.dispatchAction({
        type: 'downplay', // 取消之前高亮显示的图
        seriesIndex: 0,
        dataIndex: currentIndex
    });
    currentIndex = (currentIndex + 1) % dataLen;
    myChar2.dispatchAction({
        type: 'highlight', // 高亮显示当前图型
        seriesIndex: 0,
        dataIndex: currentIndex
    });
    myChar2.dispatchAction({
        type: 'showTip', // 显示tooltip
        seriesIndex: 0,
        dataIndex: currentIndex
    });
}

// 启动自动循环动画效果
var startCharts = setInterval(charHover, 1000);

// 鼠标移入暂停动画效果
myChar2.on('mouseover', function(param) {
    isSet = false; // 停止自动循环标志
    clearInterval(startCharts); // 清除自动循环定时器
    myChar2.dispatchAction({
        type: 'downplay', // 取消之前高亮显示的图
        seriesIndex: 0,
        dataIndex: param.dataIndex
    });
    currentIndex = param.dataIndex; // 更新当前索引
    myChar2.dispatchAction({
        type: 'highlight', // 高亮显示当前图型
        seriesIndex: 0,
        dataIndex: param.dataIndex
    });
    myChar2.dispatchAction({
        type: 'showTip', // 显示tooltip
        seriesIndex: 0,
        dataIndex: param.dataIndex
    });
});

// 鼠标移出恢复自动循环动画效果
myChar2.on('mouseout', function() {
    if (!isSet) {
        startCharts = setInterval(charHover, 1000); // 重新启动自动循环定时器
        isSet = true; // 恢复自动循环标志
    }
});

window.addEventListener("resize",function(){
    myChar1.resize();
    //图表自适应窗口大小
});




 </script>
 </body>
 </html>

三.代码介绍

一.主题切换

需先下载主题样式,且必须有      jquer.js    文件,

用html实现下列列表用到selection标签

需在文件尾部写入主题(这里用的异步所以复杂一下)

二.饼图动态动画

三.多表联动

四.交互效果--触发

五.异步加载

第一种.没有外部数据,直接把数据写进setOption

第二种.有外部数据,表是在同级目录下,get(写入表名)

六.加载动画

需要在数据前写入showloading,动画的开始

动画的结束写在数据后。settimeout是动画持续时间

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值