zoukankan      html  css  js  c++  java
  • 【高级课程笔记】—— Echarts常用图表

    一、折线图 line

    折线图主要用来展示数据相随着时间推移的变化

    折线图非常适合用于展示一个连续的二维数据,如某网站访问人数或商品销量价格的波动。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>折线</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 500px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        /*基于准备好的dom,初始化echarts实例*/
        const myChart = echarts.init(document.getElementById('main'));
    
        /*图表配置项*/
        const option = {
            /*x轴
            *   data 类目轴数据
            *   boundaryGap 边界留白
            *   axisLabel 标签
            *       margin 标签偏移量
            * */
            xAxis:{
                data:['html','css','js','canvas'],
                boundaryGap:false,
            },
    
            /*y轴*/
            yAxis:{
                axisLabel:{
                    margin:18
                }
            },
    
            /*series 系列集合
            *   type 系列类型,line
            *   name 系列名
            *   data 系列数据,[20,10,30,40]
            *   smooth 平滑
            *   areaStyle 区域样式
            *       color 区域颜色
            *   symbolSize 标记点大小
            *   symbol 标记图形
            *       内置形状 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none'
            *       'image://url' 图片
            *       'path://' svg
            * */
            series:{
                name:'学习人数',
                type:'line',
                data:[20,20,40,100],
                smooth:true,
                areaStyle:{
                    color:'#eeeeff'
                },
                symbolSize:30,
                // symbol:'rect',
                symbol:'image://../images/bs.png',
            }
        };
    
    
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </body>
    </html>

     

    二、饼图 pie

    饼图主要用于展现不同类别数值相对于总数占比情况。

    图中扇形的弧长表示该类别的占比大小,所有扇形的弧长的总和为100%。

    当各类别数据占比较接近时,建议选用柱状图或南丁格尔玫瑰图

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>饼图</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 500px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(document.getElementById('main'));
        const data=[
            {name:'css',value:20},
            {name:'html',value:30},
            {name:'js',value:40},
            {name:'canvas',value:50},
        ];
        // 指定图表的配置项和数据
        const option = {
            /*视觉映射 visualMap
            *   false 可见性
            *   min 最小值
            *   max 最大值
            *   inRange 定义 在选中范围中 的视觉元素
            *       colorLightness[0, 1] 亮度
            * */
            visualMap:{
                min:data[0].value,
                max:data[data.length-1].value,
                inRange:{
                    colorLightness:[0.3,0.8]
                },
                show:false,
            },
    
            /*饼图 pie
            *   type 图表类型
            *   data 数据 [{name,value},...]
            *   roseType 玫瑰图类型
            *       radius 半径
            *       area 面积
            *   radius 半径,[起始半径,结束半径]可生成环形
            *   itemStyle 项目样式
            *       color 颜色
            * */
            series:{
                type:'pie',
                data,
                roseType:'radius',
                itemStyle:{
                    color:'red'
                }
            }
    
        };
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </body>
    </html>
    

    三、散点图 scatter

    散点图通常用来识别两个变量之间的相关性或用来观察他们的关系,从而发现某种趋势,对于查找异常值或理解数据分布也很有效。如下图某个班级学生身高和体重的分布状况。

    气泡图:散点图可以将一个对象的两个变量映射到x、y 位置上。如果此对象还有一个变量,那就可以映射到散点的大小上,这就变成了气泡图。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>散点图</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 500px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(document.getElementById('main'));
        //数据
        const data=[
            //x,y, z
            [0, 0, 20],
            [10,10,40],
            [20,10,50],
            [30,30,30],
        ];
        // 指定图表的配置项和数据
        const option = {
            /*x 轴*/
            xAxis:{},
            /*y轴*/
            yAxis:{},
            /*散点图 scatter
            *   data 数据
            *   symbolSize 散点尺寸
            * */
            series:{
                type:'scatter',
                data,
                // symbolSize:20,
                symbolSize:function(param){
                    return param[2];
                }
            }
        };
    
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </body>
    </html>

    四、K 线 candlestick

    K 线通常用于表示股票走势

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>K线图</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 500px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(document.getElementById('main'));
        // 指定图表的配置项和数据
        const option = {
            /*x 轴*/
            xAxis:{
                data:['01','02','03','04']
            },
            /*y轴*/
            yAxis:{},
            /*k 线图 candlestick
            * data [open, close, lowest, highest]-[开盘值, 收盘值, 最低值, 最高值]
            * */
            series:{
                type:'candlestick',
                data:[
                    [20,30,10,40],
                    [30,20,10,40],
                    [30,20,0,40],
                    [30,20,0,80],
                ]
            }
        };
    
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </body>
    </html>

    五、雷达 radar

    雷达图的每个变量都有一个从中心向外发射的轴线,所有的轴之间的夹角相等,同时每个轴有相同的刻度。 雷达图表适合对比变量在数据集内的高低,比如产品性能、排名、评估等

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>雷达</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 600px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(document.getElementById('main'));
        /*英雄数据
        *   value [生命,攻击,暴击,防御,速度]
        * */
        const data=[
            {
                name:'关羽',
                value:[80,98,80,70,70]
            },
            {
                name:'鲁班',
                value:[85,70,75,95,80]
            },
        ];
    
        // 指定图表的配置项和数据
        const option = {
            /*标题 title*/
            title: {
                text: '英雄实力对比'
            },
    
            /*图例 legend
            *   data 数据
            *   orient 排列方式
            *       horizontal 水平,默认
            *       vertical 垂直
            * */
            legend:{
                data:['关羽','鲁班'],
                left:'left',
                top:40,
                orient:'vertical'
            },
    
            /*
            * 雷达坐标系组件 radar
            *   indicator 雷达图的指示器集合 []
            *       name 指示器名称
            *       min、max 数据区间,实际数据会在此区间内计算比值
            *       color 标签颜色
            *   shape 雷达形状
            *       polygon 多边形,默认
            *       circle 圆形
            *
            * */
            radar:{
                indicator:[
                    {name:'生命',min:0,max:100,color:'green'},
                    {name:'攻击',min:0,max:100,color:'maroon'},
                    {name:'暴击',min:0,max:100,color:'orange'},
                    {name:'防御',min:0,max:100,color:'black'},
                    {name:'速度',min:0,max:100,color:'blue'},
                ],
                // shape:'circle'
            },
    
    
            /*
            * 雷达 radar
            *   type 图表类型
            *   data 数据 [{name,value[]},...]
            * */
            series:{
                type:'radar',
                data,
            }
    
        };
    
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </body>
    </html>
    

    六、仪表盘 gauge

    仪表盘适合表示量的变化,如速度、体积、温度、进度、完成率、满意度等。

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>仪表盘</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 500px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        // 基于准备好的dom,初始化echarts实例
        const myChart = echarts.init(document.getElementById('main'));
        // 指定图表的配置项和数据
        const option = {
            /*
            * 仪表盘 gauge
            *   type 图表类型
            *   detail 仪表盘详情{formatter:'{value}%'}
            *   data 数据[{name,value},...]
            * */
            series:{
                type:'gauge',
                data:[
                    {name:'速度',value:10}
                ]
            }
    
        };
    
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    
        /*随机修改仪表数值,每隔一秒钟修改一次*/
        setInterval(function(){
            const num=Math.floor(Math.random()*100);
            option.series.data[0].value=num;
            myChart.setOption(option);
        },1000)
    
    </script>
    </body>
    </html>
    

    七、地图 map

    地图主要用于地理区域数据的可视化

    地理坐标系组件 geo

    geo 是地理坐标系组件,它也可以画地图。

    geo 和map 的区别在于,geo支持在地理坐标系上绘制散点图,线集。

     八、案例——疫情折现图

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>西虹市 新增确诊/治愈 趋势</title>
        <style>
            #main{
                margin: 20px;
                 700px;
                height: 500px;
            }
        </style>
    </head>
    <body>
    <!--建立dom 容器-->
    <div id="main"></div>
    <!--引入echarts-->
    <script src="../js/echarts.min.js"></script>
    <script>
        /*基于准备好的dom,初始化echarts实例*/
        const myChart = echarts.init(document.getElementById('main'));
        /*数据*/
        //日期
        const xData=['3.3', '3.4', '3.5', '3.6', '3.7', '3.8', '3.9'];
        //确诊数据
        const qzData=[200, 170, 90, 80, 30, 40, 10];
        //治愈数据
        const zyData=[10, 20, 40, 70, 120, 145, 150];
    
    
        /*指定图表的配置项和数据*/
        const option = {
            /*标题 title {}
            *   主标题 text
            *   副标题 subtext
            *   主标题样式 textStyle
            *       color
            *       fontSize
            * */
            title:{
                text:'西虹市 新增确诊/治愈 趋势',
                subtext:'单位:例',
                textStyle: {
                    fontSize:16
                },
            },
            /*提示框 tooltip
            *   trigger 提示框触发方式
            *       item 图形触发,主要在散点图,饼图等无类目轴的图表中使用。
            *       axis 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表
            *       none 什么都不触发
            *   backgroundColor 背景色
            *   textStyle 文字样式
            *   borderWidth 边界宽度
            *   borderColor 边界颜色
            * */
            tooltip:{
                trigger:'axis',
                backgroundColor:'white',
                textStyle:{
                    color:'#333'
                },
                borderWidth:1,
                borderColor:'#ddd',
            },
            /*x轴
            *   data 类目轴数据
            *   boundaryGap 边界留白
            *   axisLine 轴线
            *       show 可见性
            *   axisLabel 标签
            *       rotate 旋转
            *       margin 外边距
            *   axisTick 刻度
            *       show 可见性
            * */
            xAxis: {
                boundaryGap : false,
                data: xData,
                axisLine:{
                    show:false
                },
                axisLabel:{
                    rotate:50,
                    margin:15
                },
                axisTick:{
                    show:false
                }
            },
            /*y轴
            *   其属性与x 轴类似
            * */
            yAxis: {
                type: 'value',
                axisLine:{
                    show:false
                },
                axisLabel:{
                    margin:15
                },
                axisTick:{
                    show:false
                }
            },
            /*图例 legend
            *   data[] 图例的数据,每一项代表一个系列的 name
            *   icon 图表形状
            *   itemGap 元素间隙
            *   itemHeight 元素高度
            *   textStyle 文字样式
            *       fontSize 大小
            *       color 颜色
            *       padding 内间距
            *   left top right bottom 边界位置
            * */
            legend:{
                data:['确诊','治愈'],
                icon:'circle',
                itemGap:18,
                itemHeight:7,
                textStyle: {
                    fontSize:12,
                    color:'#999',
                    padding:[0,0,0,-9]
                },
                top:32,
                left:'right',
            },
            /*网格 grid
            *   left top right bottom 边界位置
            * */
            grid:{
                right:10,
                left:50,
                top:70
            },
            /*系列列表 series
            *   name 系列名,用于提示tooltip,图例legend 筛选,数据更新
            *   type 列表类型
            *   lineStyle 线的样式
            *       color 颜色
            *   showSymbol 标记点的显示
            *   smooth 线的圆滑
            *   data 数据
            * */
            series: [
                {
                    name:'确诊',
                    type:'line',
                    lineStyle: {
                        color: 'crimson',
                    },
                    showSymbol:false,
                    smooth:true,
                    data:qzData
                },
                {
                    name:'治愈',
                    type:'line',
                    lineStyle: {
                        color: 'lightseagreen',
                    },
                    showSymbol:false,
                    smooth:true,
                    data:zyData
                },
            ]
        };
    
    
        // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
    </body>
    </html>
    


    注:课程来自开课吧

    人与人的差距是:每天24小时除了工作和睡觉的8小时,剩下的8小时,你以为别人都和你一样发呆或者刷视频
  • 相关阅读:
    [CF340D]Bubble Sort Graph/[JZOJ3485]独立集
    [JZOJ3484]密码
    [HDU1756]Cupid's Arrow
    Luogu P4006 小 Y 和二叉树
    Luogu P4040 [AHOI2014/JSOI2014]宅男计划
    Luogu P3243 [HNOI2015]菜肴制作
    Luogu P3942 将军令
    Luogu P4823 [TJOI2013]拯救小矮人
    Luogu P3620 [APIO/CTSC 2007]数据备份
    BZOJ3709 [PA2014]Bohater
  • 原文地址:https://www.cnblogs.com/ljq66/p/15425734.html
Copyright © 2011-2022 走看看