Echarts


Echarts.js

Echart.js,它是由百度公司开发的一个使用JavaScript实现的开源可视化库(同时也有D3.js,它是国外的可视化库),兼容性强,底层依赖轻量级的 Canvas 类库 ZRender,可高度个性化定制数据可视化图表(移动端pc端都兼容)

安装:

npm install echarts --save

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

前端可视化工具

常见工具:ECharts、g2、d3、vis、hightChart等

g2框架封装:bizcharts(react)、viser(vue)

地理可视化 :g2、L7、高德的loca、菜鸟的鸟图

3D可视化:three.js

使用步骤

  1. 引入Echarts文件

    可以通过导入

    import * as echarts from 'echarts'

    也可以直接放在全局,直接使用

    Vue.prototype.$echarts = window.echarts
  2. 准备呈现图表的盒子(一定要有宽高,比如width: 600px; height: 400px)

  3. 初始化echarts对象

    init方法:

    (dom: HTMLDivElement|HTMLCanvasElement, theme?: Object|string, opts?: {
        devicePixelRatio?: number,
        renderer?: string,
        useDirtyRect?: boolean, // 从 `v5.0.0` 开始支持
        width?: number|string,
        height?: number|string,
        locale?: string
    }) => ECharts

    创建一个 ECharts 实例,返回 echartsInstance,不能在单个容器上初始化多个 ECharts 实例。

    参数

    • dom

      实例容器,一般是一个具有高宽的div元素。

      注:如果div是隐藏的,ECharts 可能会获取不到div的高宽导致初始化失败,这时候可以明确指定divstyle.widthstyle.height,或者在div显示后手动调用 echartsInstance.resize 调整尺寸。

      ECharts 3 中支持直接使用canvas元素作为容器,这样绘制完图表可以直接将 canvas 作为图片应用到其它地方,例如在 WebGL 中作为贴图,这跟使用 echartsInstance.getDataURL 生成图片链接相比可以支持图表的实时刷新。

    • theme

      应用的主题。可以是一个主题的配置对象,也可以是使用已经通过 echarts.registerTheme 注册的主题名称。参见 ECharts 中的样式简介

    • opts

      附加参数。有下面几个可选项:

      • devicePixelRatio 设备像素比,默认取浏览器的值window.devicePixelRatio

      • renderer 渲染器,支持 'canvas' 或者 'svg'。参见 使用 Canvas 或者 SVG 渲染

      • useDirtyRect 是否开启脏矩形渲染,默认为false。参见 ECharts 5 新特性

      • width 可显式指定实例宽度,单位为像素。如果传入值为 null/undefined/'auto',则表示自动取 dom(实例容器)的宽度。

      • height 可显式指定实例高度,单位为像素。如果传入值为 null/undefined/'auto',则表示自动取 dom(实例容器)的高度。

      • locale 使用的语言,内置 'ZH''EN' 两个语言,也可以使用 echarts.registerLocale 方法注册新的语言包。目前支持的语言见 src/i18n

        如果不指定主题,也需在传入opts前先传入null,如:

        const chart = echarts.init(dom, null, {renderer: 'svg'});
  4. 准备配置项

  5. 将配置设置给echarts实例对象(配置是可以设置多次,叠加设置,这样可以分离数据的代码和初始化的代码)

import * as echarts from 'echarts';
// 基于准备好的dom,初始化echarts实例(如果是vue则用ref获取)
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption({
    //标题
    title: {
        text: 'ECharts 入门示例'
    },
    //通用配置,可设置对图表接触事件
    tooltip: {
        //默认mousemove,移动到每一项触发光标和详情信息
        trigger:'item',
        //设置后要click,点击才会有信息提示
        triggerOn:'click'
    },
    //工具栏,里面有很多好用的工具
    toolbox:{
        feature:{
            //可以直接到导出图片的功能
            saveAsImage:{}
        }
    }
    //x轴
    xAxis: {
        type: "category",
        data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
    },
    //y轴
    yAxis: {
         type: "value",
         scale:true    //让数据不会从0开始
    },
    //系列列表,通过type决定图表类型,可以有多个对象
    series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
});

的type:

  • category 类目轴

  • value数值轴(一般为数值轴则不用设置data属性,它会去另一个轴每个类别取series找到对应的数据)

系列表的type:line(折线图)、bar(柱状图)、pie(饼图)、scatter(散点图)、graph(关系图)、tree(树图)

折线图数据曲线平滑:smooth:true

散点图涟漪散点图(effectScatter) 需要二维数组配合使用

饼图的数据{name:'allen', value:100},不需要x轴、y轴

map地图的tooltip:提示框组件,可在里面进行修改,得到提示的内容不同

更多配置项详情查看官方文档

一个很有趣的echarts图表实例https://echarts.apache.org/examples/zh/editor.html?c=bar-race-country

还有些echats5新特性:实现图表跨系列的形变动画,更加酷炫!

图形原理

Echarts使用一个名为 zrender 的渲染引擎来管理渲染元素,并以通用的方式渲染到不同的平台

  • ZRender:二维矢量库Zrender,用于图形元素管理、渲染器管理和事件系统。它支持多种渲染后端,包括canvas、svg和vml。
  • Echarts最初采用canvas绘制图表,但是从Echarts4.x开始,发布了SVG渲染器,提供了另外一种渲染方式

Echarts的SVG VS Canvas

知乎上的结论大图

绿色表示推荐使用 SVG,红色表示推荐使用 Canvas,↑箭头越多表示推荐程度越强烈

使用SVG

  • 移动平台优选 SVG

  • 图表个数很多时优选 SVG

  • 导出小文件高清晰时使用 SVG

使用Canvas

  • 部分特殊渲染效果只有 Canvas 支持

    除了某些特殊的渲染可能依赖 Canvas:如炫光尾迹特效带有混合效果的热力图等,绝大部分功能 SVG 都是支持的。此外,目前的 SVG 版中,富文本、材质功能尚未实现。

  • 数据量特别大时推荐使用 Canvas 渲染

知乎地址:https://zhuanlan.zhihu.com/p/33093211


文章作者: Hello
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Hello !
 上一篇
React拓展 React拓展
拓展GraphQLGraphQL是Facebook开发的一种查询语言,并于2015年发布,它是REST API的替代品 它既是一种用于API的查询语言,也是一个满足你数据查询运行时,GraphQL对你的API的数据提供了一套易于理解的完整描
2022-03-31
下一篇 
Threejs(上) Threejs(上)
1.threejs简介WebGLWebGL(全写Web Graphics Library)字面意义理解就是web图像库.是一种3D绘图协议,种绘图技术标准允许把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL
2022-03-20
  目录