系统了解ECharts的使用

ECharts是一款开源的统计图表框架,ECharts 底层依赖 ZRender,ZRender是一个轻量级的二维绘制库。ECharts的使用也是非常的简单,网上有很多教程,这里再简单的整理一下。

首先,echarts.min.js的引入;
可以去官网或github上下载合适的版本,也可以优雅地使用npm install echarts --save命令下载,这里从github下载最新的版本4.7.0;

第二,在进行统计图的使用之前,还有一点非常重要,那就是主题的设置。
echarts默认有三个主题,第一个是默认的主题,第二个是dark,黑色的背景;第三个是light,白色的背景;统计图表里的颜色,有默认值。

很多同事,包括我自己,一上来就画统计图,还不知道有主题设置这一说,后面在调整统计图里的色调时,费了老大的劲了,而且越调整越不协调,搞得花里胡哨的。通过设置主题可以避免这个繁琐的环节。

先看看效果,有对比,才有差异;主题设置是很重要的一环,选对了主题,后面就不需要手动设置color调整颜色了,调色绝对是个费时费力不讨好的活,毕竟每个人的审美观不同。选对了主题,就不用拘于调色这种小节了,多省事。

就用饼图,做三种主题的的区分吧;


默认主题
dark主题
light主题



    
    myProject
    
    


    

这三种主题,如果都不满意,那么可以通过 ECharts主题定制 自定义主题,这些主题,有主色调,媚而不妖,太耐看了。

      //设置主题
        $.getJSON('lib/wonderland.json', function (themeJSON) {
            echarts.registerTheme('wonderland',themeJSON)
            var chart = echarts.init(document.getElementById('main'), 'wonderland');
            chart.setOption({
                series: {
                    type: 'pie',
                    data: [
                        {name: 'A', value: 1212},
                        {name: 'B', value: 2323},
                        {name: 'C', value: 1919},
                        {name: 'D', value: 1719},
                        {name: 'E', value: 1519}
                    ]
                }
            });
        });
自定义主题效果图-梦幻仙境

echarts的js文件有三个,需要注意一下,echarts.js体积最大,包含所有的图表和组件;echarts.common.js,体积适中,包含常见的图表和组件;echarts.simple.js,体积较小,仅包含最常用的图表和组件;

做数据统计的目的,是让数据说话,不用看繁多的数据记录,通过一个图表简单明了地把数据的趋势、历史曲线展现出来。既然如此,每个统计图表都有其特别的用途,每个图的用途不同,关注点自然也不同。

在ECharts中有多少统计图形呢,请看下图,仔细数一数,有二十多种,这还是单一的,不算复合的。


图表chart

除了图表,还有坐标系;


坐标系

组件也是很重要的一环,锦上添花的小物件;


组件

折线图,用线条的升降表示事物的发展变化趋势;




    
    myProject
       
    
    
    


    
折线效果图

饼图,以一个圆的面积表示总体,用扇形的面积表示部分在总体中所占的百分比;展示部分与总体的关系,部分相对于总数的大小。上面已有例子,这里忽略。

柱形图,条图,也是很常用的统计图,现在柱形图的展示方式也多了花样;

        var chart = echarts.init(document.getElementById('main'), 'wonderland');
        var option = {
            legend: {},
            tooltip: {},
            dataset: {
                source: [
                    ['product', '2012', '2013', '2014', '2015'],
                    ['Matcha Latte', 41.1, 30.4, 65.1, 53.3],
                    ['Milk Tea', 86.5, 92.1, 85.7, 83.1],
                    ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4]
                ]
            },
            xAxis: [
                {type: 'category', gridIndex: 0},
                {type: 'category', gridIndex: 1}
            ],
            yAxis: [
                {gridIndex: 0},
                {gridIndex: 1}
            ],
            grid: [
                {bottom: '55%'},
                {top: '55%'}
            ],
            series: [
                // 这几个系列会在第一个直角坐标系中,每个系列对应到 dataset 的每一行。
                {type: 'bar', seriesLayoutBy: 'row'},
                {type: 'bar', seriesLayoutBy: 'row'},
                {type: 'bar', seriesLayoutBy: 'row'},
                // 这几个系列会在第二个直角坐标系中,每个系列对应到 dataset 的每一列。
                {type: 'bar', xAxisIndex: 1, yAxisIndex: 1},
                {type: 'bar', xAxisIndex: 1, yAxisIndex: 1},
                {type: 'bar', xAxisIndex: 1, yAxisIndex: 1},
                {type: 'bar', xAxisIndex: 1, yAxisIndex: 1}
            ]
        }
        chart.setOption(option);
多坐标多系列

饼图和折线图的完美结合;

var chart = echarts.init(document.getElementById('main'), 'wonderland');
        var option = {
                legend: {},
                tooltip: {
                    trigger: 'axis',
                    showContent: false
                },
                dataset: {
                    source: [
                        ['product', '2012', '2013', '2014', '2015', '2016', '2017'],
                        ['Matcha Latte', 41.1, 30.4, 65.1, 53.3, 83.8, 98.7],
                        ['Milk Tea', 86.5, 92.1, 85.7, 83.1, 73.4, 55.1],
                        ['Cheese Cocoa', 24.1, 67.2, 79.5, 86.4, 65.2, 82.5],
                        ['Walnut Brownie', 55.2, 67.1, 69.2, 72.4, 53.9, 39.1]
                    ]
                },
                xAxis: {type: 'category'},
                yAxis: {gridIndex: 0},
                grid: {top: '55%'},
                series: [
                    {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                    {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                    {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                    {type: 'line', smooth: true, seriesLayoutBy: 'row'},
                    {
                        type: 'pie',
                        id: 'pie',
                        radius: '30%',
                        center: ['50%', '25%'],
                        label: {
                            formatter: '{b}: {@2012} ({d}%)'
                        },
                        encode: {
                            itemName: 'product',
                            value: '2012',
                            tooltip: '2012'
                        }
                    }
                ]
            };

            chart.on('updateAxisPointer', function (event) {
                var xAxisInfo = event.axesInfo[0];
                if (xAxisInfo) {
                    var dimension = xAxisInfo.value + 1;
                    chart.setOption({
                        series: {
                            id: 'pie',
                            label: {
                                formatter: '{b}: {@[' + dimension + ']} ({d}%)'
                            },
                            encode: {
                                value: dimension,
                                tooltip: dimension
                            }
                        }
                    });
                }
            });
        chart.setOption(option);
饼图与折线的完美组合

基础概念一览
echarts 实例,一个网页中可以有多个实例;
系列(series),一个实例里有多个系列,每个系列的type可以是line(折线图)、bar(柱状图)、pie(饼图)、scatter(散点图)、graph(关系图)、tree(树图)等其中的一种;
组件(component):xAxis(直角坐标系 X 轴)、yAxis(直角坐标系 Y 轴)、grid(直角坐标系底板)、angleAxis(极坐标系角度轴)、radiusAxis(极坐标系半径轴)、polar(极坐标系底板)、geo(地理坐标系)、dataZoom(数据区缩放组件)、visualMap(视觉映射组件)、tooltip(提示框组件)、toolbox(工具栏组件)、series(系列)这些都属于组件;
option 描述图表:有什么数据、要画什么图表、图表长什么样子、含有什么组件、组件能操作什么事情等等。简而言之,option 表述了:数据、数据如何映射成图形、交互行为。
组件之间的定位需要靠坐标系,坐标系又有直角坐标系(grid)、极坐标系(polar)、地理坐标系(GEO)、单轴坐标系(singleAxis)、日历坐标系(calendar);

一句话的概括:
一个页面上可以有多个echarts 实例,一个echarts 实例中包含多个系列(series),系列需要运行在坐标系上,还有零零碎碎的很多组件(component),系列、组件都被装在option容器里面,通过最后的设置option,就渲染成了图表。

更多精彩,请参考以下文档
github下载地址:https://github.com/apache/incubator-echarts/releases
EChats下载地址:https://echarts.apache.org/zh/download.html
EChats文档:https://echarts.apache.org/zh/tutorial.html
主题的设定:https://echarts.baidu.com/theme-builder/
官网: https://echarts.baidu.com/index.html
常见问题: https://www.echartsjs.com/zh/faq.html
菜鸟教程: https://www.runoob.com/echarts/echarts-tutorial.html
统计效果实现的参考: http://www.zi-han.net/theme/hplus/

你可能感兴趣的:(系统了解ECharts的使用)