一、 registerTheme
注册主题,用于初始化实例的时候指定。
最好的办法是定制主题,然后修改里面的选项
 
使用方法
echarts.init(dom,theme)
el: echarts.init($(selector)[0], 'schoolReport');
 
二、 resize
改变图表尺寸,在容器大小发生改变时需要手动调用。
Tip: 有时候图表会放在多个标签页里,那些初始隐藏的标签在初始化图表的时候因为获取不到容器的实际高宽,可能会绘制失败,因此在切换到该标签页时需要手动调用 resize 方法获取正确的高宽并且刷新画布,或者在 opts 中显示指定图表高宽。
 
el:比如两个标签页公用一个图表,在一个标签页宽高发生变化后,调用此方法重置容器大小
$(selector)[0].style.height = yAxis.length * 50 + "px";
myChart.clear();
myChart.resize();
myChart.setOption(option);
 
 
三、 on &   off
绑定 & 解绑事件处理函数。
 
el:图表公用的时候,一定要调用off之后在绑定时间,否则事件触发越来越多
myChart.off("click");
myChart.on('click', function (param) {
    if (param) {
        callback(param.dataIndex, param.name);
    }
});
 
四、  yAxis.axisLabel.interval
坐标轴刻度标签的显示间隔,在类目轴中有效。 默认会采用标签不重叠的策略间隔显示标签。
 
el:当X\Y轴数据过长时,会隐藏一部分X\Y轴的名称,而隔几个显示, 可以设置成 0 强制显示所有标签。
yAxis: {
    type: 'category',
    axisLabel:{
        interval: 0
    },
    data: yAxis
},
 
五、 tooltip.position
提示框浮层的位置,默认不设置时位置会跟随鼠标的位置。
 
el:随着鼠标的位置移动,并在鼠标的右下15
tooltip: {
    trigger: 'axis',
    axisPointer: { // 坐标轴指示器,坐标轴触发有效
        type: 'shadow' // 默认为直线,可选为:'line' | 'shadow'
    },
    position: function (point, params, dom, rect, size) { //point: 鼠标位置
        // 固定在顶部
        return [point[0] + 15, point[1] + 15];
    }
},
 
六、 tooltip.formatter
提示框浮层内容格式器,支持字符串模板和回调函数两种形式。
 
tooltip: {
    trigger: 'axis',
    axisPointer: { // 坐标轴指示器,坐标轴触发有效
        type: 'line' // 默认为直线,可选为:'line' | 'shadow'
    },
    formatter: "{b} : {c} 次"
},
          tooltip: {
formatter: function (params) {
//公式计算显示次数×权重
let result = params[0].name + "<br>";
params.forEach(function (item, i) {
const seriesIndex = params[i].seriesIndex;
const score = data[seriesIndex].score;
if (parseInt(params[i].data) == 0) {
result += params[i].marker + params[i].seriesName + ": " + params[i].data + "<br>";
} else {
result += params[i].marker + params[i].seriesName + ": " + params[i].data + " ( " + parseInt(params[i].data / score) + "次" + " × " + score + " ) " + "<br>";
}
})
return result;
}
},

七、 grid.containLabel

Y轴文字过长显示不全是使用

el: http://echarts.baidu.com/option.html#grid.containLabel

containLabel 为 true 的时候:这常用于『防止标签溢出』的场景,标签溢出指的是,标签长度动态变化时,可能会溢出容器或者覆盖其他组件。

          grid: {
left: 20
right: 20,
bottom: '0',
top: '0',
containLabel: true
},

***还有一种情况,初始化时显示的是文字长度,但是删除最长的文字那行,页面重新渲染后,Y轴的长度发生改变,文字还是显示不全***

1、找出最长的文字,根据设置的字体计算出文字长度

    //尝试计算Y轴删除按钮的落点
let yAxisTextMaxoffsetX = 0;
try {
let yAxisTextMaxLength = 0;
let yAxisTextMaxContent = "";
yAxis.forEach(function (item) {
let len = 0;
for (var i = 0; i < item.length; i++) {
if (item.charCodeAt(i) > 255) {
//汉字两个字符
len += 2;
} else {
len++;
}
} if (len > yAxisTextMaxLength) {
yAxisTextMaxContent = item;
}
yAxisTextMaxLength = Math.max(len, yAxisTextMaxLength);
})
yAxisTextMaxoffsetX = yAxisTextMaxLength * 6 //12px/2
console.log("最长的内容为:" + yAxisTextMaxContent + ",字符长度为:" + yAxisTextMaxLength + ",计算出的长度为:" + yAxisTextMaxoffsetX);
} catch (error) {
console.log(error);
}

2、设置grid.left为最长文字长度

       grid: {
left: yAxisTextMaxoffsetX == 0 ? 20 : yAxisTextMaxoffsetX + 8,//yAxis.axisLabel.margin 默认为8
right: 20,
bottom: '0',
top: '0',
containLabel: yAxisTextMaxoffsetX == 0 ? true : false,
},

八、 yAxis.triggerEvent 与 yAxis.formatter  yAxis.rich

Y轴增加图标,实现删除功能

el:

1、增加图标:使用formatter编辑返回值,搭配rich的backgroundColor增加删除图标。

http://echarts.baidu.com/option.html#yAxis.axisLabel.rich

         yAxis: {
type: 'category',
axisLabel: {
interval: 0,
formatter: function (value, index) {
return value + '{space|}' + '{del|}';
},
// rich 里是文本片段的样式设置:
rich: {
del: {
width: 20,
height: 20,
align: 'center',
backgroundColor: {
image: '/static/hide.svg',
},
},
space: {
width: 3
}
}
},
data: yAxis,
triggerEvent: true,//是否触发事件,param.componentType == "yAxis"
},

2、删除功能:由于param返回的值少,只能根据鼠标落点,计算是否点击了图标。根据获取的value找出index,将数据删除

        myChart.on('click', function (param) {
if (param && param.componentType == "yAxis") {
console.log("单击了" + param.value + "的Y轴标签" + ",位置在" + param.event.offsetX);
if (yAxisTextMaxoffsetX != 0 && param.event.offsetX < yAxisTextMaxoffsetX) {// yAxisTextMaxoffsetX值的计算在上边第七里
return false;
}
let activeIndex = 0;
yAxis.forEach(function (item, index) {
if (item === param.value) {
activeIndex = index;
return;
}
});
yAxis.splice(activeIndex, 1);
data.forEach(function (item) {
item.data.splice(activeIndex, 1);
});
//TO 重绘echarts
} else {
console.log("单击了" + param.name + "柱状图");
if (typeof callback === "function") {
callback();
}
}
});

Echart使用笔记的更多相关文章

  1. eChart学习笔记

    eChart的html代码很简单,给个容器,定好宽高就可以了 1 <div class="container-fluid"> 2 <div class=" ...

  2. EChart.js 笔记二

    交互组件 Echart.js 中交互组件比较多.例如: legend(图例).title(标题组件).visualMap(视觉映射组件).dataZoom(数据缩放组件).timeline(时间线组件 ...

  3. EChart.js 笔记一

    一直对数据可视化比较感兴趣,当年 Alibaba 年报晚会上的大屏显示可谓是技惊四座,够震撼,将数据之美展现得淋漓尽致. 国内的前端数据可视化插件中,echart.js 算是热度很高的,也容易上手,算 ...

  4. 前端笔记之JavaScript面向对象(三)初识ES6&underscore.js&EChart.js&设计模式&贪吃蛇开发

    一.ES6语法 ES6中对数组新增了几个函数:map().filter().reduce() ES5新增的forEach(). 都是一些语法糖. 1.1 forEach()遍历数组 forEach() ...

  5. EChart报表插件使用笔记(1)

    报表插件Echart java类 package com.spring.controller; import java.io.IOException; import java.util.Arrays; ...

  6. echart报表插件使用笔记(二)--按月统计

    按月统计注冊人数 java类: package com.spring.controller; import java.io.IOException; import java.sql.Connectio ...

  7. 【echart】学习笔记

    1.  x 轴 y轴 的max  min 只能为5的倍数 2.

  8. EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象

    最近做项目想要在百度地图上叠加显示echart的散点图,然后根据地图的缩放等级和区域范围要显示不同的散点图,这中间折腾了好久.功能要求包括: (1)底图使用百度地图: (2)可以在地图上叠加显示ech ...

  9. highcharts 系统梳理笔记

    前言 highcharts最早接触它是在4年前,后来项目中很少用到图表这些东西,就算有也是用echart.他们思路都一样自己去官网上看api即可,构造数据填充节点,没有什么难点,这次是做完手上的工作然 ...

随机推荐

  1. Ajax请求二进制流并在页面展示

    后端代码: public void getIntegralQrcode(HttpServletResponse response, String token) throws BizException, ...

  2. day16 python之匿名函数,递归函数

    匿名函数 匿名函数格式 函数名 = lambda 参数 :返回值 #参数可以有多个,用逗号隔开 #匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回值 #返回值和正常的函数一样可以是任 ...

  3. 网络库压力测试:mongols VS evpp

    evpp是360出品的一个网络库,基于libevent,进行了许多改造,对c++11友好.据称比libevent性能要好. 到底有多好呢?360开发人员有自己的测试,信不信由你. evpp源码下有个h ...

  4. ldd ldconfig

    ldd - print shared object dependencies ldconfig 主要是在默认搜寻目录/lib和/usr/lib以及动态库配置文件/etc/ld.so.conf内所列的目 ...

  5. maven 项目连接mysql8.0版本时的注意事项

    MySQL 8.0 正式版 8.0.11 已发布,官方表示 MySQL 8 要比 MySQL 5.7 快 2 倍,还带来了大量的改进和更快的性能! 以前的maven项目,要注意依赖的注入 查看pom. ...

  6. 数据库session立即生效(64---8192) SCOPE参数

    SCOPE=MEMORY|SPFILE|BOTH 指示了修改参数时的“作用域”: SCOPE=MEMORY :只在实例中修改,重启数据库后此次修改失效. SCOPE=SPFILE :只修改SPFILE ...

  7. 使用xshell从远程服务器下载文件到本地

    XSHELL工具上传文件到Linux以及下载文件到本地(Windows) Xshell很好用,然后有时候想在windows和linux上传或下载某个文件,其实有个很简单的方法就是rz,sz.首先你的L ...

  8. 使用session和cookie实现用户登录:一个登录页面,一个servlet,一个登录成功页面

    文件目录 1.登录页面 <%@ page language="java" contentType="text/html; charset=utf-8" p ...

  9. JS,JQuery小知识

    http://blog.163.com/wumingli456@126/blog/static/28896414201112252456459/?suggestedreading&wumii

  10. python numpy科学计算和数据分析的基础包

    import numpy as np #创建ndarray# data1 = [6, 5, 7, 1, 3]# arrl = np.array(data1)# print(arrl)#多维列表创建nd ...