Echart不完全使用小记录

简单记录一下在项目中使用全过程中遇到了的问题以及踩坑了不熟悉的配置项。前期使用发现配置项太多了,一脸懵逼,后来发现在实例上试配置项熟悉的快一些。以下是使用过程中摘抄官网以及实际使用记录。
还有很多没有了解的待以后慢慢学习

一、简单上手echart图表

1.获取ECharts.

可以通过以下4种方式获取。

2.引入 ECharts

3.绘制图表

  1. 在绘图前我们需要为 ECharts 准备一个具备高宽的 DOM 容器。
<body>
    <!-- 为 ECharts 准备一个具备大小(宽高)的 DOM -->
    <div id="main" style="width: 600px;height:400px;"></div>
</body>

可以通过 echarts.init 方法初始化一个 echarts 实例并通过 setOption 方法生成一个简单的柱状图,下面是完整代码。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <title>ECharts</title>
    <!-- 引入 echarts.js -->
    <script src="echarts.min.js"></script>
</head>
<body>
    <!-- 为ECharts准备一个具备大小(宽高)的Dom -->
    <div id="main" style="width: 600px;height:400px;"></div>
    <script type="text/javascript">
        // 基于准备好的dom,初始化echarts实例
        var myChart = echarts.init(document.getElementById('main'));

        // 指定图表的配置项和数据
        var option = {
            title: {
                text: 'ECharts 入门示例'
            },
            tooltip: {},
            legend: {
                data:['销量']
            },
            xAxis: {
                data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
            },
            yAxis: {},
            series: [{
                name: '销量',
                type: 'bar',
                data: [5, 20, 36, 10, 10, 20]
            }]
        };
      // 使用刚指定的配置项和数据显示图表。
        myChart.setOption(option);
    </script>
</body>
</html>

二、在vue项目中的使用

    1. npm安装echarts
      3.1.1 版本之前 ECharts 在 npm 上的 package 是非官方维护的,从 3.1.1 开始由官方 EFE 维护 npm 上 ECharts 和 zrender 的 package。
      使用如下命令通过 npm 安装 ECharts:
    npm install echarts --save
    
    1. 通过 npm 安装的 echarts 会出现在 myProject/node_modules 目录下,从而可以直接在项目代码中得到 echarts,例如:
  • 2.1. 使用 CommonJS - require得到echarts(引入的是全部
    var echarts = require('echarts')
      var echarts = require('echarts'); 
// 基于准备好的dom,初始化echarts实例
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption({
    title: { text: 'ECharts 入门示例' },
    tooltip: {},
    xAxis: {
        data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"]
    },
    yAxis: {},
    series: [{
        name: '销量',
        type: 'bar',
        data: [5, 20, 36, 10, 10, 20]
    }]
});
  • 2.2 引入Echarts使用 ES Module 得到echarts
    import * as echarts from 'echarts';

三、具体使用

1、绘制饼状图像:
  • 配置项属性

    1. avoidLabel- avoidLabelOverlap
    2. labelLine- [labelLine](https://www.echartsjs.com/zh/option.html#series- pie.labelLine). 标签的视觉引导线样式,在 label 位置 设置为'outside'的时候会显示视觉引导线

    3.legend- legend
    图例组件. 展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

    image.png

    1. 系列的颜色。
      只能自己设置颜色数组进而去修改。

    2. color. 调色盘颜色列表。如果系列没有设置颜色,则会依次循环从该列表中取颜色作为系列颜色。

    3. tooltip. tooltip
      提示框组件。

      tooltip.trigger string

      [ default: 'item' ]

      触发类型。

      可选:(如下3个)

      • ' item '
        数据项图形触发,主要在散点图,饼图等无类目轴的图表中使用。

      • 'axis'
        坐标轴触发,主要在柱状图,折线图等会使用类目轴的图表中使用。

      在 ECharts 2.x 中只支持类目轴上使用 axis trigger,在 ECharts 3 中支持在 直角坐标系极坐标系上的所有类型的轴。并且可以通过 axisPointer.axis 指定坐标轴。

      • 'none' 什么都不触发。
    • tooltip.**formatter** - tooltip.formatter
      tooltip.formatter string, Function
      提示框浮层内容格式器,支持字符串模板和回调函数两种形式。
      1. 字符串模板

模板变量有 {a}, {b}{c}{d}{e},分别表示系列名,数据名,数据值等。 在 trigger'axis' 的时候,会有多个系列的数据,此时可以通过 {a0}, {a1}, {a2} 这种后面加索引的方式表示系列的索引。 不同图表类型下的 {a}{b}{c}{d} 含义不一样。 其中变量{a}, {b}, {c}, {d}在不同图表类型下代表数据含义为:

  • 折线(区域)图、柱状(条形)图、K线图 : {a}(系列名称),{b}(类目值),{c}(数值), {d}(无)

  • 散点图(气泡)图 : {a}(系列名称),{b}(数据名称),{c}(数值数组), {d}(无)

  • 地图 : {a}(系列名称),{b}(区域名称),{c}(合并数值), {d}(无)

  • 饼图、仪表盘、漏斗图: {a}(系列名称),{b}(数据项名称),{c}(数值), {d}(百分比)

更多其它图表模板变量的含义可以见相应的图表的 label.formatter 配置项。

示例:

formatter: '{b0}: {c0}<br />{b1}: {c1}'

2, 回调函数

回调函数格式:

(params: Object|Array, ticket: string, callback: (ticket: string, html: string)) => string
第一个参数 params 是 formatter 需要的数据集。格式如下:

{
    componentType: 'series',
    // 系列类型
    seriesType: string,
    // 系列在传入的 option.series 中的 index
    seriesIndex: number,
    // 系列名称
    seriesName: string,
    // 数据名,类目名
    name: string,
    // 数据在传入的 data 数组中的 index
    dataIndex: number,
    // 传入的原始数据项
    data: Object,
    // 传入的数据值。在多数系列下它和 data 相同。在一些系列下是 data 中的分量(如 map、radar 中)
    value: number|Array|Object,
    // 坐标轴 encode 映射信息,
    // key 为坐标轴(如 'x' 'y' 'radius' 'angle' 等)
    // value 必然为数组,不会为 null/undefied,表示 dimension index 。
    // 其内容如:
    // {
    //     x: [2] // dimension index 为 2 的数据映射到 x 轴
    //     y: [0] // dimension index 为 0 的数据映射到 y 轴
    // }
    encode: Object,
    // 维度名列表
    dimensionNames: Array<String>,
    // 数据的维度 index,如 0 或 1 或 2 ...
    // 仅在雷达图中使用。
dimensionIndex: number,
    // 数据图形的颜色
    color: string,

    // 饼图的百分比
    percent: number,
注:encode 和 dimensionNames 的使用方式,例如:

如果数据为:

dataset: {
    source: [
        ['Matcha Latte', 43.3, 85.8, 93.7],
        ['Milk Tea', 83.1, 73.4, 55.1],
        ['Cheese Cocoa', 86.4, 65.2, 82.5],
        ['Walnut Brownie', 72.4, 53.9, 39.1]
    ]
}
则可这样得到 y 轴对应的 value:

params.value[params.encode.y[0]]
如果数据为:

dataset: {
    dimensions: ['product', '2015', '2016', '2017'],
    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}
    ]
  }
}
等等。。。
  1. grid
    直角坐标系内绘图网格,单个 grid 内最多可以放置上下两个 X 轴,左右两个 Y 轴。可以在网格上绘制折线图柱状图散点图(气泡图)

在 ECharts 2.x 里单个 echarts 实例中最多只能存在一个 grid 组件,在 ECharts 3 中可以存在任意个 grid 组件。

  1. xAxis.boundaryGap ----- boundaryGap
    控制x轴坐标位置。
    坐标轴两边留白策略,类目轴和非类目轴的设置和表现不一样。(category-类目)
// boundaryGap值为false的时候,折线第一个点在y轴上
   boundaryGap: false,
折线样式

echarts-设置折线样式和X轴和Y轴的分割线样式

image.png
//GMV近30天变化趋势
      trendOption: {
        color: '#4359B7',
        title: {
          text: '支付订单的订单实付金额的总和',
          bottom: 8,
          left: 300,
          textStyle: {
            color: '#999',
            fontWeight: 'narmal'
          }
        },
        tooltip: {
          trigger: 'axis',
          formatter: '{b}(一)<br/> {a} :  {c}',
          backgroundColor: '#fff',
          borderColor: '#4359B7',
          borderWidth: 1,
          textStyle: {
            color: '#666'
          },
          padding:[8,14]
        },
        xAxis: {
          data: [],
          type: 'category',
          splitNumber: 10,
          interval: 50, //强制设置坐标轴分割间隔
          // boundaryGap: false, 
          nameGap: 26,
          // nameTextStyle: {
          //   padding: [4,5,6,7], //上 右 下 左 
          //   shadowColor: '#f00',
          //   width: '100px'
          // },
          axisTick: {
            alignWithLabel: true
          },
          axisLine: {
            onZero: false,
            lineStyle: {
              color: '#CCCCCC'
            }
          },
          axisLabel: {
            color: '#999'
          }
        },
        yAxis: {
          type: 'value',
          data: [],
          scale: true, //是否脱离0值
          splitLine: {  //分割线
            show: true  ,
            lineStyle: {
              color:'#ccc',
              width: 1,
              type: 'dotted'
            }
          },
          axisLine: {
            lineStyle: {
              color: 'transparent',
              width: 1, //这里是为了突出显示加上的  
            }
          },
          axisLabel: {
            color: '#999'
          },
          // axisPointer: {
          //   label: {
          //       formatter: function (params) {
          //         return '降水量  ' + params.value
          //             + (params.seriesData.length );
          //       }
          //   }
          // },
        },
        series: [{
          name: '支付订单的订单实付金额的总和 ',
          type: 'line', 
          data: [],     
          symbolSize: 6, //设置拐点大小
          symbol:'circle', // 设置拐点为实心圆
          // markLine: {
          //   silent: true,
          //   symbol: ['none', 'none'],
          //   data: [{
          //     yAxis: 0
          //   }, {
          //     yAxis: 2
          //   }, {
          //     yAxis: 4
          //   }, {
          //     yAxis: 6
          //   }, {
          //     yAxis: 8
          //   },{
          //     yAxis: 10
          //   }, {
          //     yAxis: 12
          //   }]
          // }
        }]
      },

类目轴中 boundaryGap 可以配置为 truefalse。默认为 true,这时候刻度只是作为分隔线,标签和数据点都会在两个刻度之间的带(band)中间。

非类目轴,包括时间,数值,对数轴,boundaryGap是一个两个值的数组,分别表示数据最小值和最大值的延伸范围,可以直接设置数值或者相对的百分比,在设置 minmax 后无效。 示例:

boundaryGap: ['20%', '20%']
xAxis: {
        // type: 'category',  (类目
        boundaryGap: false,
        data: ['周一','周二','周三','周四','周五','周六','周日']
},
??好像有的不起作用。存疑

  • xAxis.axisTick.alignWithLabel - axisTick.alignWithLabel
    [ default: false ]
    类目轴中在 boundaryGaptrue 的时候有效,可以保证刻度线和标签对齐。如下图:

    image

  • xAxis.axisLine.onZero boolean - xAxis.axisLine.onZero
    xAxis.axisLine.onZero boolean
    [ default: true ]
    X 轴或者 Y 轴的轴线是否在另一个轴的 0 刻度上,只有在另一个轴为数值轴且包含 0 刻度时有效。

  • xAxis.axisLine.symbol string - xAxis.axisLine.symbol string

    xAxis.axisLine.symbol string, Array
    

    [ default: 'none' ]
    轴线两边的箭头。可以是字符串,表示两端使用同样的箭头;或者长度为 2 的字符串数组,分别表示两端的箭头。默认不显示箭头,即 'none'。两端都显示箭头可以设置为 'arrow',只在末端显示箭头可以设置为 ['none', 'arrow']。



  • xAxis.axisLabel.formatter
    xAxis.axisLabel.formatter string, Function
    [ default: null ]
    刻度标签的内容格式器,支持字符串模板和回调函数两种形式。
示例:
// 使用字符串模板,模板变量为刻度默认标签 {value}
formatter: '{value} kg'

// 使用函数模板,函数参数分别为刻度数值(类目),刻度的索引
formatter: function (value, index) {
    // 格式化成月/日,只在第一个刻度显示年份
    var date = new Date(value);
    var texts = [(date.getMonth() + 1), date.getDate()];
    if (index === 0) {
        texts.unshift(date.getYear());
    }
    return texts.join('/');
}

刻度标签文字的颜色,默认取 axisLine.lineStyle.color。支持回调函数,格式如下

(val: string) => Color

参数是标签的文本,返回颜色值,如下示例:

textStyle: {
    color: function (value, index) {
        return value >= 0 ? 'green' : 'red';
    }
}
  1. 控制y轴坐标折线虚线展示。
yAxis: {
            // splitLine: {
            //     show: false
            // }
        },
虚线展示:
series: [{
          type: 'line',
          data: [820, 932, 901, 934, 1290, 1330, 1320],
          markLine: {
            silent: true,
            data: [{
                yAxis: 300
            }, {
                yAxis: 600
            }, {
                yAxis: 900
            }, {
                yAxis: 1200
            }, {
                yAxis: 1500
            }]
            }
        }]
      });

折线图折线图
折线图中x坐标轴展示:
情况一:

image.png

情况二:
image.png

折线图中y轴


image.png

以上为第一次在项目中使用echarts图表不完全小结。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,324评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,303评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,192评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,555评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,569评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,566评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,927评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,583评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,827评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,590评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,669评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,365评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,941评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,928评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,159评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,880评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,399评论 2 342

推荐阅读更多精彩内容

  • 这篇文章主要讲述Echarts设置字体和线条的颜色相关操作笔记,希望文章对你有所帮助,主要是自己的在线笔记吧。我在...
    蓝色梦想家阅读 9,875评论 1 1
  • Can't get dom width or height echarts解决方案 var mainContain...
    飞豹豹豹豹豹阅读 1,541评论 0 0
  • 最近在实习期间,接手了一个数据搜索项目,需要我从后台调取数据,并将之用折线图直方图显示出来,并且可以将多组数据绘制...
    南客nk阅读 7,904评论 3 21
  • <!DOCTYPE html> echarts <!-- --> // 基于准备好的dom,初始化echarts实...
    安与和音阅读 398评论 0 2
  • 一、简单介绍 Echart是百度研发团队开发的一款报表视图JS插件,功能十分强大,使用内容做简单记录;(EChar...
    Marin_chen阅读 21,487评论 9 5