ECharts基础概念介绍

  • Post author:
  • Post category:其他


echarts实例

一个网页中可以创建多个

echarts

实例。每个

echarts实例

中可以创建多个图表和坐标系等等(用option来描述)。准备一个DOM节点(作为echarts的渲染容器),就可以在上面创建一个echarts实例。每个echarts实例独占一个DOM节点。

系列(series)

系列(series)是很常见的名词。在echarts里,系列是指:一组数值以及他们映射成的图。在echarts中取其扩展的概念,不仅表示数据,也表示数据映射成为的图。所以,一个系列包含的要素至少要有:一组数值、图表类型(series.type)、以及其他的关于这些数据如何映射成图的参数。

echarts里系列类型(series.type)就是图表类型。系列类型至少有:line(折线图)、bar(柱状图)、pie(饼图)、scatter(散点图)、graph(关系图)、tree(树图)、…

如下图,右侧的option中声明了三个系列(series):pie(饼图系列)、line(折线图系列)、bar(柱状图系列),每个系列中有他所需要的的数据(series.data)。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>myProject</title>
    <!-- 引入 lib/echarts.custom.min.js -->
    <script src="./lib/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height:400px;"></div>
<script>
    // 绘制图表。
    // 基于准备好的dom,初始化 echarts 实例并绘制图表。
    echarts.init(document.getElementById('main')).setOption({
        xAxis: {
            data:[
                'Jan','Feb','Mar','Apr','May','Jun',
                'Jul','Aug','Sep','Oct','Nov','Dec'
            ]
        },
        yAxis: {},
        series: [{
            type: 'pie',
            center:['65%',60],
            radius:35,
            data:[
                {name:'XX',value:52},
                {name:'YY',value:54},
                {name:'ZZ',value:42},
            ]
        },{
            type:'line',
            data:[34,28,45,69,39,43,33,23,23,33,39,22]
        },{
            type:'bar',
            data:[20,14,32,46,24,23,23,13,16,20,24,15]
        }]
    });
</script>
</body>
</html>

另一种配置方式,系列的数据从dataset中获取:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>myProject</title>
    <!-- 引入 lib/echarts.custom.min.js -->
    <script src="./lib/echarts.min.js"></script>
</head>
<body>
<div id="main" style="width: 600px;height:400px;"></div>
<script>
    // 绘制图表。
    // 基于准备好的dom,初始化 echarts 实例并绘制图表。
    echarts.init(document.getElementById('main')).setOption({
        xAxis: {
           type:'category'
        },
        yAxis: {},
        dataset:{
          source:[
              ['Jan',34,20,'XX',52],
              ['Feb',28,14,'YY',54],
              ['Mar',45,32,'ZZ',42],
              ['Apr',69,46],
              ['May',39,24],
              ['Jun',43,23],
              ['Jul',33,23],
              ['Aug',23,13],
              ['Sep',23,16],
              ['Oct',33,20],
              ['Nov',39,24],
              ['Dec',22,15],
          ]
        },
        series: [{
            type: 'pie',
            center:['65%',60],
            radius:35,
            encode:{itemName:3,value:4}
        },{
            type:'line',
            encode:{x:0,y:1}
        },{
            type:'bar',
            encode:{x:0,y:2}
        }]
    });
</script>
</body>
</html>

组件(component)

在系列之上,echarts中各种内容,被抽象成为”组件”。echarts中至少有这些组件:xAxis(直角坐标系X轴)、yAxis(直角坐标系Y轴)、grid(直角坐标系地底板)、angleAxis(极坐标系角度轴)、radiusAxis(极坐标系半径轴)、polar(极坐标系底板)、geo(地理坐标系)、dataZoom(数据区缩放组件)、visualMap(视觉映射组件)、tooltip(提示框组件)、toolbox(工具栏组件)、series(系列)、…

其实系列(series)也是一种组件,可以理解为:系列是专门绘制图的组件。

如下图,右侧option中声明了各个组件(包括系列),各个组件就出现在图中

用Option来描述图表

简而言之:option表述了:数据、数据如何映射成图形、交互行为。

// 创建 echarts 实例。
var dom = document.getElementById('dom-id');
var chart = echarts.init(dom);

// 用 option 描述 `数据`、`数据如何映射成图形`、`交互行为` 等。
// option 是个大的 JavaScript 对象。
var option = {
    // option 每个属性是一类组件。
    legend: {...},
    grid: {...},
    tooltip: {...},
    toolbox: {...},
    dataZoom: {...},
    visualMap: {...},
    // 如果有多个同类组件,那么就是个数组。例如这里有三个 X 轴。
    xAxis: [
        // 数组每项表示一个组件实例,用 type 描述“子类型”。
        {type: 'category', ...},
        {type: 'category', ...},
        {type: 'value', ...}
    ],
    yAxis: [{...}, {...}],
    // 这里有多个系列,也是构成一个数组。
    series: [
        // 每个系列,也有 type 描述“子类型”,即“图表类型”。
        {type: 'line', data: [['AA', 332], ['CC', 124], ['FF', 412], ... ]},
        {type: 'line', data: [2231, 1234, 552, ... ]},
        {type: 'line', data: [[4, 51], [8, 12], ... ]}
    }]
};

// 调用 setOption 将 option 输入 echarts,然后 echarts 渲染图表。
chart.setOption(option);

组件的定位

多数组件和系列,都能够与top/right/down/left/width/height绝对定位。这种定位方式,类似于CSS的绝对定位(position:absolute).绝对定位是基于echarts容器中DOM节点。

其中,它们每个值都可以是:

  • 绝对数值(例如bottom:54 表示:距离echarts容器底边界54像素)。
  • 或者基于echarts容器宽度的百分比(例如 right:‘20%’ 表示:距离echarts容器右边界的距离是echarts容器宽度的20%)

我们可以注意到,left、right、width是一组横向,top、bottom、height是一组纵向。每组中至多设置两项就可以了,第三项就可以被推算出来



版权声明:本文为qq_37881565原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。