echarts学习笔记

基础概念

项目里使用npm安装echarts依赖包

npm install echarts

在要使用的地方引入

import * as echarts from 'echarts'

初始化

echrats提供的初始化接口是echarts.init
初始化方法里面要绑定容器 ,容器的概念其实就是一个又固定宽高的html节点。初始化的时候传入该节点(doucument.getElementById(‘xxx’));

 const chart = echarts.init(document.getElementById('bingchart'))

1.如果绑定的节点没有宽度高度,没办法渲染出图表。图表的宽高默认是绑定节点的宽高。没有指定宽高的报错如下
在这里插入图片描述
[ECharts] Can’t get DOM width or height. Please check dom.clientWidth and dom.clientHeight. They should not be 0.For example, you may need to call this in the callback of window.onload.

2.如果想要图表响应页面进行变化图表也有提供方法 给页面添加resize事件并调用echarts实例的方法

 window.addEventListener('resize', function() {
   chart.resize();//什么都不传默认图表大小 也可以传宽高
   /*chart.resize({
	  width: 800,
	  height: 400
	});*/
  });

3.假设页面中存在多个标签页,每个标签页都包含一些图表。当选中一个标签页的时候,其他标签页1的内容在dom中被移除,当用户再选中这些标签页的时候,就会发现图表不见了。
在容器节点被销毁时。勇敢页销毁图表

chart.dispose ()

样式(颜色)

1.颜色可以用一个数组写在配置项外边 然后再配置的时候引入这个数组。(可以定义一个,也可以定义多个)
2.颜色也可以写在数据集里[{value:xxx,color:‘red’}]
3.可以通过配置项设置一些别的颜色如高亮颜色之类的

option = {
  series: {
    type: 'scatter',

    // 普通样式。
    itemStyle: {
      // 点的颜色。
      color: 'red'
    },
    label: {
      show: true,
      // 标签的文字。
      formatter: 'This is a normal label.'
    },

    // 高亮样式。
    emphasis: {
      itemStyle: {
        // 高亮时点的颜色。
        color: 'blue'
      },
      label: {
        show: true,
        // 高亮时标签的文字。
        formatter: 'This is a emphasis label.'
      }
    }
  }
};

数据集(dataset)

数据集和xAxis平级
数据集是专门用来管理数据的组件。虽然每个系列都可以在series.data中设置数据。但是数据集可以被多个组件复用。
数据集的source可以是数组形式也可以是对象数组格式
1.数组形式下0位置会被忽略渲染 它作为渲染的一个参照 不作为数值渲染
2.对象数组形式下都会渲染,需要配置一个dimensions 完成映射

 dataset: {
    // 用 dimensions 指定了维度的顺序。直角坐标系中,如果 X 轴 type 为 category,
    // 默认把第一个维度映射到 X 轴上,后面维度映射到 Y 轴上。
    // 如果不指定 dimensions,也可以通过指定 series.encode
    // 完成映射,参见后文。
    dimensions: ['product', '2015', '2016', '2017'], //可以是数组也可以是对象形式的
    /*
     dimensions: [
	      { name: 'score' },
	      // 可以简写为 string ,表示 dimension name 。
	      'amount',
	      // 可以在 type 中指定维度类型。
	      { name: 'product', type: 'ordinal' }
	    ],
	  }
    */
    source: [
      { product: 'Matcha Latte', '2015': 43.3, '2016': 85.8, '2017': 93.7 },
      { product: 'Milk Tea', '2015': 83.1, '2016': 73.4, '2017': 55.1 },
      { product: 'Cheese Cocoa', '2015': 86.4, '2016': 65.2, '2017': 82.5 },
      { product: 'Walnut Brownie', '2015': 72.4, '2016': 53.9, '2017': 39.1 }
    ]
  },

3.使用encode完成映射

// 在任何坐标系和系列中,都支持:
encode: {
  // 使用 “名为 product 的维度” 和 “名为 score 的维度” 的值在 tooltip 中显示
  tooltip: ['product', 'score']
  // 使用 “维度 1” 和 “维度 3” 的维度名连起来作为系列名。(有时候名字比较长,这可以避免在 series.name 重复输入这些名字)
  seriesName: [1, 3],
  // 表示使用 “维度2” 中的值作为 id。这在使用 setOption 动态更新数据时有用处,可以使新老数据用 id 对应起来,从而能够产生合适的数据更新动画。
  itemId: 2,
  // 指定数据项的名称使用 “维度3” 在饼图等图表中有用,可以使这个名字显示在图例(legend)中。
  itemName: 3
}

// 直角坐标系(grid/cartesian)特有的属性:
encode: {
  // 把 “维度1”、“维度5”、“名为 score 的维度” 映射到 X 轴:
  x: [1, 5, 'score'],
  // 把“维度0”映射到 Y 轴。
  y: 0
}

// 单轴(singleAxis)特有的属性:
encode: {
  single: 3
}

// 极坐标系(polar)特有的属性:
encode: {
  radius: 3,
  angle: 2
}

// 地理坐标系(geo)特有的属性:
encode: {
  lng: 3,
  lat: 2
}

// 对于一些没有坐标系的图表,例如饼图、漏斗图等,可以是:
encode: {
  value: 3
}

数据转换(

var option = {
  dataset: [
    {
      // 这个 dataset 的 index 是 `0`。
      source: [
        ['Product', 'Sales', 'Price', 'Year'],
        ['Cake', 123, 32, 2011],
        ['Cereal', 231, 14, 2011],
        ['Tofu', 235, 5, 2011],
        ['Dumpling', 341, 25, 2011],
        ['Biscuit', 122, 29, 2011],
        ['Cake', 143, 30, 2012],
        ['Cereal', 201, 19, 2012],
        ['Tofu', 255, 7, 2012],
        ['Dumpling', 241, 27, 2012],
        ['Biscuit', 102, 34, 2012],
        ['Cake', 153, 28, 2013],
        ['Cereal', 181, 21, 2013],
        ['Tofu', 395, 4, 2013],
        ['Dumpling', 281, 31, 2013],
        ['Biscuit', 92, 39, 2013],
        ['Cake', 223, 29, 2014],
        ['Cereal', 211, 17, 2014],
        ['Tofu', 345, 3, 2014],
        ['Dumpling', 211, 35, 2014],
        ['Biscuit', 72, 24, 2014]
      ]
      // id: 'a'
    },
    {
      // 这个 dataset 的 index 是 `1`。
      // 这个 `transform` 配置,表示,此 dataset 的数据,来自于此 transform 的结果。
      transform: {
        type: 'filter',
        config: { dimension: 'Year', value: 2011 }
      }
      // 我们还可以设置这些可选的属性: `fromDatasetIndex` 或 `fromDatasetId`。
      // 这些属性,指定了,transform 的输入,来自于哪个 dataset。例如,
      // `fromDatasetIndex: 0` 表示输入来自于 index 为 `0` 的 dataset 。又例如,
      // `fromDatasetId: 'a'` 表示输入来自于 `id: 'a'` 的 dataset。
      // 当这些属性都不指定时,默认认为,输入来自于 index 为 `0` 的 dataset 。
    },
    {
      // 这个 dataset 的 index 是 `2`。
      // 同样,这里因为 `fromDatasetIndex` 和 `fromDatasetId` 都没有被指定,
      // 那么输入默认来自于 index 为 `0` 的 dataset 。
      transform: {
        // 这个类型为 "filter" 的 transform 能够遍历并筛选出满足条件的数据项。
        type: 'filter',
        // 每个 transform 如果需要有配置参数的话,都须配置在 `config` 里。
        // 在这个 "filter" transform 中,`config` 用于指定筛选条件。
        // 下面这个筛选条件是:选出维度( dimension )'Year' 中值为 2012 的所有
        // 数据项。
        config: { dimension: 'Year', value: 2012 }
      }
    },
    {
      // 这个 dataset 的 index 是 `3`。
      transform: {
        type: 'filter',
        config: { dimension: 'Year', value: 2013 }
      }
    }
  ],
  series: [
    {
      type: 'pie',
      radius: 50,
      center: ['25%', '50%'],
      // 这个饼图系列,引用了 index 为 `1` 的 dataset 。也就是,引用了上述
      // 2011 年那个 "filter" transform 的结果。
      datasetIndex: 1
    },
    {
      type: 'pie',
      radius: 50,
      center: ['50%', '50%'],
      datasetIndex: 2
    },
    {
      type: 'pie',
      radius: 50,
      center: ['75%', '50%'],
      datasetIndex: 3
    }
  ]
};

数据转换(transform)

版本5点多开始支持这个 ,通过已有的数据集生成新的数据集 特点有很多
1.把数据分成多份用不同的饼图展现
2.进行一些数据统计运算,并展示结果
3.用某学数据可视化算法处理数据,并展示结果
4.数据排序
5.去除或直选择数据项
基础使用的代码如下

var option = {
  dataset: [
    {
      // 这个 dataset 的 index 是 `0`。
      source: [
        ['Product', 'Sales', 'Price', 'Year'],
        ['Cake', 123, 32, 2011],
        ['Cereal', 231, 14, 2011],
        ['Tofu', 235, 5, 2011],
        ['Dumpling', 341, 25, 2011],
        ['Biscuit', 122, 29, 2011],
        ['Cake', 143, 30, 2012],
        ['Cereal', 201, 19, 2012],
        ['Tofu', 255, 7, 2012],
        ['Dumpling', 241, 27, 2012],
        ['Biscuit', 102, 34, 2012],
        ['Cake', 153, 28, 2013],
        ['Cereal', 181, 21, 2013],
        ['Tofu', 395, 4, 2013],
        ['Dumpling', 281, 31, 2013],
        ['Biscuit', 92, 39, 2013],
        ['Cake', 223, 29, 2014],
        ['Cereal', 211, 17, 2014],
        ['Tofu', 345, 3, 2014],
        ['Dumpling', 211, 35, 2014],
        ['Biscuit', 72, 24, 2014]
      ]
      // id: 'a'
    },
    {
      // 这个 dataset 的 index 是 `1`。
      // 这个 `transform` 配置,表示,此 dataset 的数据,来自于此 transform 的结果。
      transform: {
        type: 'filter',
        config: { dimension: 'Year', value: 2011 }
      }
      // 我们还可以设置这些可选的属性: `fromDatasetIndex` 或 `fromDatasetId`。
      // 这些属性,指定了,transform 的输入,来自于哪个 dataset。例如,
      // `fromDatasetIndex: 0` 表示输入来自于 index 为 `0` 的 dataset 。又例如,
      // `fromDatasetId: 'a'` 表示输入来自于 `id: 'a'` 的 dataset。
      // 当这些属性都不指定时,默认认为,输入来自于 index 为 `0` 的 dataset 。
    },
    {
      // 这个 dataset 的 index 是 `2`。
      // 同样,这里因为 `fromDatasetIndex` 和 `fromDatasetId` 都没有被指定,
      // 那么输入默认来自于 index 为 `0` 的 dataset 。
      transform: {
        // 这个类型为 "filter" 的 transform 能够遍历并筛选出满足条件的数据项。
        type: 'filter',
        // 每个 transform 如果需要有配置参数的话,都须配置在 `config` 里。
        // 在这个 "filter" transform 中,`config` 用于指定筛选条件。
        // 下面这个筛选条件是:选出维度( dimension )'Year' 中值为 2012 的所有
        // 数据项。
        config: { dimension: 'Year', value: 2012 }
      }
    },
    {
      // 这个 dataset 的 index 是 `3`。
      transform: {
        type: 'filter',
        config: { dimension: 'Year', value: 2013 }
      }
    }
  ],
  series: [
    {
      type: 'pie',
      radius: 50,
      center: ['25%', '50%'],
      // 这个饼图系列,引用了 index 为 `1` 的 dataset 。也就是,引用了上述
      // 2011 年那个 "filter" transform 的结果。
      datasetIndex: 1
    },
    {
      type: 'pie',
      radius: 50,
      center: ['50%', '50%'],
      datasetIndex: 2
    },
    {
      type: 'pie',
      radius: 50,
      center: ['75%', '50%'],
      datasetIndex: 3
    }
  ]
};

上图的这个转换的对数据多少还是有点要求的 觉得看配置项麻烦的话 其实还是可以选择自己硬写的 嘿嘿

坐标轴

二维图表 大概都分为x轴和y轴吧
在echrats x轴(xAxis)和y轴(yAxis)都由轴线,刻度,刻度标签,轴标题四个部分组成。部分图表中还会有网格线来帮助查看和计算数据。
配置项对应表

配置项意义
轴线axisLine
刻度axisTick
刻度标签axisLabel
轴标题name

常用图表类型

图表名称type配置项实现方式
基础柱状图barseries里面只有一项
多系列柱状图barseries有多项
堆叠柱状图barseries有多项且每项配置堆叠的轴(stack: ‘x’)
基础折线图line
堆叠折线图line
平滑折线图linesmooth:true
阶梯折线图linestep: start/middle/end
区域折线图lineareaStyle:{}
基础饼图pie–(饼图没有轴)
圆环图pieradius: [‘40%’, ‘70%’]
南丁格尔玫瑰图pieroseType: ‘area’
基础散点图scatter

tips:setOption 可以让图表重新渲染 series通过name匹配

/ 异步加载数据
$.get('data.json').done(function(data) {
  // 填入数据
  myChart.setOption({
    xAxis: {
      data: data.categories
    },
    series: [
      {
        // 根据名字对应到相应的系列
        name: '销量',
        data: data.data
      }
    ]
  });
});

配置项

下面就开始配置项的学习啦 以下为options的第一层

配置项解释
title标题组件,包含主标题和副标题。
legend图例组件,控制多系列的显示和隐藏
grid直角坐标系内绘图网格,单个 grid 内最多可以放置上下两个 X 轴,左右两个 Y 轴
xAxisX轴
yAxisy轴
polar极坐标系,可以用于散点图和折线图。每个极坐标系拥有一个角度轴和一个半径轴
radiusAxis极坐标系的径向轴。
angleAxis极坐标的角度轴
radar雷达坐标系组件 只适用于雷达
dataZoom组件 用于区域缩放,从而能自由关注细节的数据信息,或者概览数据整体,或者去除离群点的影响
visualMap是视觉映射组件,用于进行『视觉编码』,也就是将数据映射到视觉元素(视觉通道)。
tooltip提示框组件
axisPointer坐标轴的全局公用设置
toolbox工具栏。内置有导出图片,数据视图,动态类型切换,数据区域缩放,重置五个工具。
brush是区域选择组件,用户可以选择图中一部分数据,从而便于向用户展示被选中数据,或者他们的一些统计计算结果。
geo地理坐标系组件。
parallel平行坐标系
parallelAxis平行坐标系的坐标轴
singleAxis单轴。可以被应用到散点图中展现一维数据
timeLine提供了在多个 ECharts option 间进行切换、播放等操作的功能
graphic原生图形元素组件。可以支持的图形元素包括:image, text, circle, sector, ring, polygon, polyline, rect, line, bezierCurve, arc, group
calendar日历坐标系组件。
dataset数据集
serise配置项
darkMode是否是暗黑模式,默认会根据背景色 backgroundColor 的亮度自动设置。 如果是设置了容器的背景色而无法判断到,就可以使用该配置手动指echart会根据是否是暗黑模式调整文本等的颜色。
color调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色
backgroundColor背景色,默认无背景。
textStyle全局字体样式
animation是否开启动画 默认开启
animationThreshold是否开启动画的阈值,当单个系列显示的图形数量大于这个阈值时会关闭动画。
animationDuration初始动画时长
animationEasing初始动画的缓动效果
animationDelay初始动画的延迟
animationDurationUpdate数据更新动画的时长
animationEasingUpdate数据更新动画的缓动效果
animationDelayUpdate数据更新动画的延迟
stateAnimation状态切换的动画配置,支持在每个系列里设置单独针对该系列的配置。
blendMode图形的混合模式
hoverLayerThreshold图形数量阈值
useUTC是否使用utc时间

图表大类

配置项解释
line折线图
bar柱状图
pie饼图
scatter散点图(气泡图)
effectScatter带有涟漪效果的散点图(气泡图)
radar雷达图
tree树图
treemap层级数据 树形数据
sunburst旭日图
boxplot『箱形图』、『盒须图』、『盒式图』、『盒状图』、『箱线图』
candlestickK线图
heatmap热力图
map地图
parallel平行坐标
lines路径图
graph关系图
sankey桑葚图
funnel漏斗图
guage仪表盘
pictorialBar象形柱图
themeRiver主题河流
custom自定义系列

在这里插入图片描述

–未完待续–

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值