Echarts学习笔记

介绍和安装

介绍

Echarts是一个用于绘制可视化图表的工具,包括但不限于多种类型的统计图、树图、关系图、地图等。
官网是https://echarts.apache.org/,有教程、文档、实例等可以查询使用。

安装引入

可通过多种方式引入Echarts,可下载也可在线使用:

  • GitHub
  • npm
  • 在线定制
  • cdn:https://lib.baomitu.com/echarts/4.7.0/echarts.js

绘图步骤

  1. 建立dom容器
  2. 引入Echarts
  3. 实例化Echarts
  4. 建立图表配置项
  5. 显示图表



    
    ECharts
    
    
    


    
    
    

echarts 常用组件

组件以对象元素的形式写在option中,以达到配置图标的目的。

标题 title

包含以下属性:

  • 主标题 text
  • 副标题 subtext
  • 位置 left
  • 主标题样式 textStyle
  • 副标题样式 subtextStyle
  • 可见性 show

图例 legend

图例legend 可以对不同系列的数据做标注和过滤,它需要与series 搭配使用。


Echarts学习笔记_第1张图片
图例 legend

工具栏 toolbox

一些可以给用户使用的按钮工具:

  • 保存图片 saveAsImage
  • 配置项还原 restore
  • 数据视图工具 dataView
  • 数据区域缩放 dataZoom
  • 动态类型切换 magicType


    Echarts学习笔记_第2张图片
    工具栏 toolbox

提示框 tooltip

按提示框触发方式 (trigger)分类:

  • item 图形触发,主要在散点图,饼图等无类目轴的图表中使用。
  • axis 坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表
  • none 什么都不触发


    Echarts学习笔记_第3张图片
    提示框 tooltip

坐标轴 xAxis yAxis

主要包含两个属性:

  • name 坐标轴名称 (标注)
  • data 类目数据

y 轴的分割设置:

  • splitNumber 分割段数
  • interval 强制设置坐标轴分割间隔
  • minInterval 坐标轴最小间隔
  • maxInterval 坐标轴最大间隔

系列列表 series

列表类型 type

系列名 name :用于提示tooltip,图例legend 筛选,数据更新

数据 data

标记点 markPoint

data [] 标记的数据数组
标记的数据{}
name 名称
type
最小 min
最大 max
平均值 average
coord [x,y] 坐标位
symbolOffset 标记偏移
symbolSize 标记大小
value 最定制标记内容
symbol 标记图形包括 'circle', 'rect', 'roundRect', 'triangle', 'diamond', 'pin', 'arrow', 'none' ,url

标记线 markLine

data [] 标记的数据数组
标记的数据{}
name 名称
type
最小 min
最大 max
平均值 average
coord [x,y] 坐标位

示例代码:

/*基于准备好的dom,初始化echarts实例*/
    const myChart = echarts.init(document.getElementById('main'));

    /*指定图表的配置项和数据*/
    const option = {
        title:{
            text:'大前端',
            subtext:'前端语言学习人数',
            left:'center',
            // left:300,
            // left:'right', 右对齐
            // center 居中
            textStyle:{
                color:'maroon',
                fontSize:24
            },
            subtextStyle:{
                color:'maroon',
                fontSize:18
            },
            // show:false
        },

        tooltip:{
            // trigger:'item'
            // trigger:'axis'
            // trigger:'none'
        },

        grid:{
        /*绘图区 grid
        *   left right bottom right 绘图区在容器内的边距
        * */
            top:80
        },

        legend:{
// data[] 图例的数据,每一项代表一个系列的 name,与series配合使用
            data:['学习人数','就业人数'],
            left:'left'
        },

        /*工具栏 toolbox
        *   feature{} 工具配置项
        *     saveAsImage{} 保存为图片
        *     dataView{} 数据视图工具
        *     restore{} 配置项还原
        *     dataZoom{} 数据区域缩放
        *     magicType{} 动态类型切换
        *       type[] 动态类型
        *           line 折线图
        *           bar 柱状图
        *           stack 堆叠
        *           tiled 平铺
        * */
        toolbox:{
            feature:{//工具配置项
                saveAsImage:{//保存为图片
                    type:'jpeg'
                },
                dataView:{},//数据视图工具
                restore:{},//配置项还原
                dataZoom:{},//数据区域缩放
                magicType:{//动态类型切换
        /* type[] 动态类型
        *           line 折线图
        *           bar 柱状图
        *           stack 堆叠
        *           tiled 平铺 */
                    type:['line','bar','stack']
                }
            }
        },

        xAxis:{
            name:'前端语言',
            data:['html','css','js']
        },

        yAxis:{
            name:'人数',
            // splitNumber:10,//分割段数
            // interval:20,//强制设置坐标轴分割间隔
            // minInterval:20,//坐标轴最小间隔
            // maxInterval:5//坐标轴最大间隔
        },

        series:[
            {
                name:'学习人数',
                type:'bar',
                data:[30,20,40],
                markPoint:{
                    data:[
                        {type:'max'},
                        {type:'min'},
                        {value:'nnnn……',coord:[1,30]},
                    ],
                    // symbol:'circle'
                }
            },
            {
                name:'就业人数',
                type:'bar',
                data:[40,30,50],
                markLine:{
                    data:[
                        {type:'average'},
                        {type:'max'},
                        {type:'min'},
                        [
                            {coord:[0,0]},
                            {coord:[2,50]},
                        ]
                    ]
                }
            }
        ]

    };

    // 使用刚指定的配置项和数据显示图表。
    myChart.setOption(option);

echarts 常用图表

series:{type:'',}中写入以下关键词,即可配置相关图表。

  1. 折线图 line
  2. 饼图 pie
  3. 散点图 scatter
  4. K 线 candlestick
  5. 雷达 radar
  6. 仪表盘 gauge
  7. 地图 map

echarts高级应用

多坐标轴

常见应用就是一个图表有左右两个单位长度或标注不同y 轴。

yAxis:[
  {name:'学习人数',min:0,man:50},
  {name:'就业人数',min:0,man:1000},
],
series:[
  {
    name:'',
    type:'bar',
    data:[20,30,40],
    yAxisIndex:0
},{
    name:'',
    type:'',
    data:[330,450,850],
    yAxisIndex:1
}
]

异步数据更新

数据的更新有两种思路:

  1. 请求到数据后,setOption()
  2. 先setOption(),有什么先配置什么。等请求到数据后,再追加配置
myChart.setOption({ // 先
title:{
          text: '示例'
}});
myChart.setOption({ // 后
        series:[
            {
                name:'人数',
                type:'bar',
                data:[30,20,40],
            }
});

注:在数据加载的过程中,还可以使用echarts 实例对象的loading 功能
显示 loading:showLoading()
隐藏 loading:hideLoading()

数据集

dataset 数据集组件是从ECharts 4 开始有的,用于数据管理。
dataset 的优点:

  • 基于原始数据,设置映射关系,形成图表。
  • 数据和配置分离,便于单独管理。
  • 数据可以被多个系列或者组件复用。
  • 支持更多的数据的常用格式,例如二维数组、对象数组等。
    const source=[
        ['大前端','学习人数','就业人数'],
        ['html',  30,       40],
        ['css',  20,       30],
        ['js',  40,       50],
    ]
    /*const source=[
        {'大前端':'html','学习人数':30,'就业人数':40},
        {'大前端':'css','学习人数':20,'就业人数':30},
        {'大前端':'js','学习人数':40,'就业人数':50},
    ]*/
    // 指定图表的配置项和数据
    const option = {
// ...
        /*
        * dataset数据集
        *   source 数据源 []
        * */
        dataset:{
            source
        },
// 二维列表源或是对象源,效果是一样的

数据集还可以自定义行映射、列映射或维度映射。

区域缩放

作用:概览整体,观察细节
区域缩放的方式:

  • 框选型数据区域缩放组件(dataZoomSelect):提供一个选框进行数据区域缩放。即 toolbox.feature.dataZoom,配置项在 toolbox 中。
  • 内置型数据区域缩放组件(dataZoomInside):内置于坐标系中,使用户可以在坐标系上通过鼠标拖拽、鼠标滚轮、手指滑动(触屏上)来缩放或漫游坐标系。
  • 滑动条型数据区域缩放组件(dataZoomSlider):有单独的滑动条,用户在滑动条上进行缩放或漫游。

视觉映射

visualMap 视觉映射的原理

visualMap 视觉映射可以让项目的数据和颜色、大小等属性相关联。
举个例子:
source = [
[1, 1, 5],
[2, 2, 9]
]
数据源source 的第一列和第二列分别对应散点在直角坐标系中的x、y 信息,第三列则默认对应visualMap 。
若果我设置一个从绿色到红色的渐变区间,那么1 就对应绿色,9 就对应红色。

Echarts学习笔记_第4张图片
视觉映射

visualMap 的常见属性

  • type 映射方式
    • continuous 连续型
    • piecewise 分段型
  • min、max 映射区间的起始位置和结束位置,对应实际数据
  • range 显示此范围内的项目,百分百类型
  • calculable 是否显示拖拽用的手柄,在连续型的颜色映射器中
  • inRange 自定义选中范围中的视觉元素
    • color[] 颜色映射
    • symbolSize 大小映射

事件监听

ECharts 使用on 绑定事件,事件名称对应 DOM 事件名称,均为小写的字符串。如:
myChart.on('click', function (params) {
// 控制台打印数据的名称
console.log(params.name);
});

监听鼠标事件

ECharts 支持常规的鼠标事件类型,包括 'click'、'dblclick'、'mousedown'、'mousemove'、'mouseup'、'mouseover'、'mouseout'、'globalout'、'contextmenu' 事件。
所有的鼠标事件包含参数 params,如被点击的图形信息 params.componentType 。

监听组件交互事件

在 ECharts 中基本上所有的组件交互行为都会触发相应的事件。
如图例开关的行为会触发 legendselectchanged 事件:
myChart.on('legendselectchanged', function (params) {
// 获取点击图例的选中状态
let isSelected = params.selected[params.name];
// 在控制台中打印
console.log((isSelected ? '选中了' : '取消选中了') + '图例' + params.name);
// 打印所有图例的状态
console.log(params.selected);
});

代码触发组件行为

ECharts 通过调用 echarts 实例对象的dispatchAction() 方法触发组件行为。
如触发某个元素的highlight 高亮事件:
myChart.dispatchAction({
type: 'highlight',
seriesIndex: 0,
dataIndex: app.currentIndex
});

富文本标签

包含图片、多样式文字等的文本。

用formatter 写文本片段

formatter:
        '{a|文字内容}\n'+
        '{b|文字内容}\n'+
        '默认样式{x|样式 x}'

相当于:

样式a\n
样式b\n
默认样式 x

用rich 设置文本样式

示例代码:

// 基于准备好的dom,初始化echarts实例
    const myChart = echarts.init(document.getElementById('main'));

    // 数据
    const data=[
        {name:'杨戬',value:80,img:'./images/yj.jpg'},
        {name:'鲁班',value:60,img:'./images/lb.jpg'},
        {name:'沈梦溪',value:40,img:'./images/smx.jpg'},
        {name:'诸葛亮',value:30,img:'./images/zgl.jpg'}
    ];
    data.forEach(item=>{
        setRich(item);
    })

    function setRich(item){
        /*自定义标签 label
    *   formatter 文本片段
    *       '{样式名|文字内容}\n 换行'
    *   文本块的样式
    *       textBorderColor 文本描边颜色
    *       textBorderWidth 文本描边宽度
    *       ...
    *   rich 富文本,在其中写入样式
    *       width 宽
    *       height 高
    *       backgroundColor 背景色
    *           image 背景图
    *       fontSize 文字大小
    *       lineHeight 行高
    *       fontWeight 文本加粗
    *       ...
    * */
        item.label={
            textBorderColor:'#fff',
            textBorderWidth:4,
            formatter:'{img|}\n{name|'+item.name+'}\n{val|战力:'+item.value+'}',
            rich:{
                img:{
                    width:60,
                    height:60,
                    backgroundColor:{
                        image:item.img
                    }
                },
                name:{
                    fontSize:18,
                    lineHeight:32
                },
                val:{
                    fontSize:14
                },
            }
        }
    }
    /*配置项*/
    const option = {
        title:{text:'英雄战力'},
        series: {
            type: 'pie',
            data,
            radius:'70%',
        }
    };
    myChart.setOption(option);

你可能感兴趣的:(Echarts学习笔记)