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

2.开启图例组件
- 开启图例组件默认时关闭状态,通过配置legend字段后开启此功能
var option = {
legend: {
},
}
3.图例的位置
- 通过配置下面字段,可以控制图例组件的位置
| 属性 | 说明 |
|---|---|
| left | 图例组件离容器左侧的距离 |
| top | 图例组件离容器上侧的距离 |
| right | 图例组件离容器右侧的距离 |
| bottom | 图例组件离容器下侧的距离 |
legend:{
data:['视频广告1','联盟广告1','邮件营销1'],
left: '80%',
top: '30%',
}

3.图例组件的数据
- 开启图例组件的前提的是series中的数据项必须有name属性:图例组件通过series中数据项的name属性进行关联,如果数据项没有name属性,那么将无法通过图例组件控制这个数据项的展示与隐藏
- 图例组件的按钮数量与legend.data字段的值(数组长度)相关,data中有多少个数据,就生成多少个按钮(可以以此来精确控制展示那个按钮,但是没什么意义,因为其对应的图表项还是会展示)
- legend.data字段的值默认为series中的数据项中name属性的集合,以下写法是等价的
legend: {
},
series: [{
name: '1#冲床 80吨',
data: [820, 932, 901, 934, 1290, 1330],
type: 'bar'
},
{
name: '1#注塑机',
data: [600, 652, 571, 654, 990, 1530],
type: 'bar'
}]
legend: {
data: ['1#冲床 80吨', '1#注塑机']
},
series: [{
name: '1#冲床 80吨',
data: [820, 932, 901, 934, 1290, 1330],
type: 'bar'
},
{
name: '1#注塑机',
data: [600, 652, 571, 654, 990, 1530],
type: 'bar'
}]

4.图例组件的样式
- 样式非两种,正常展示时的样式和关闭时的样式
legend: {
textStyle:{
color: "rgba(255,255,255,0.8)"
},//正常状态的文本样式
itemStyle:{
},//正常状态的按钮样式
inactiveColor:"rgba(255,255,255,0.3)",//图例关闭时的颜色
},
5.单独配置某个图例项
- legend.data数组的元素的值默认情况是字符串,如果需要可以将其扩展成一个对象,依次拓展出更多的配置功能,例如图标种类,文本样式
legend: {
data: [
{
name: '1#冲床 80吨',//对应series中的name
// 强制设置图形为圆。
icon: 'circle',
// 设置文本为红色
textStyle: {
color: 'red'
},
itemStyle:{},//按钮样式
},{
name: '1#注塑机',//对应series中的name
// 强制设置图形为方。
icon: 'rect',
// 设置文本为蓝色
textStyle: {
color: 'blue'
}
}
]
},

6.多坐标系
- 一般情况下legend字段的值是一个对象,表示当前只有一个图例组件
- 如果当前图表有多个坐标系,或者有多个饼图这种,此时需要将legend配置成一个数组,每个数组元素对应一个坐标系或者饼图
legend: [
{
icon: 'circle',
left: '65%',
top: '25%',
data: ['A','B'],
},
{
icon: 'circle',
left: '25%',
top: '70%',
data: ['C','D']
}
],
series:[
{
type:"pie"
data:[{name:A,value:1},{name:B,value:2}]
},
{
type:"pie"
data:[{name:C,value:1},{name:D,value:2}]
}
]
7.配置图例以及相关数据的展示状态
- 默认情况下,会显示所有的图例,如果想隐藏某些系列的数据,可以使用selected字段进行配置
legend: {
data: ['1#冲床80吨', '1#注塑机'],
selected: {
'1#冲床80吨': true,
'1#注塑机': false
}
}

8.图例过多,分页展示
- 将type属性设置为scroll即可,滚动方向由orient属性设置
legend:{
type: 'scroll',
orient: 'vertical',//horizontal水平滚动 vertical垂直滚动
right: 20,
top: 20,
bottom: 20,
selected: selectedData
},

9.legend组件的高度
- 分页展示图例时,要么横向滚动(单行),要么垂直滚动(单列),如果想要多行自适应高度,需要在渲染前获取其所需的高度,并渲染到echarts容器中
- 在此逻辑下,echarts容器的高度分为3个部分:网格区域(网格区域的位移需要动态设定),x轴文本区域(可能有旋转,高度大概60),legend高度,其中网格高度和x轴文本高度是固定的
- 此需求下echarts容器的高度是动态的,如果是第一次渲染,则等待echarts容器高度渲染完成后再进行初始化,如果是第二次渲染,则调用resize()方法自适应新的高度
调用顺序
//1.要渲染的数据进行格式转换
//2.计算legend高度,并将新高度渲染到echarts容器中
//3.等到新高度渲染完毕,准备option进行渲染
//初始化echart
if(!this.echarts_instance){
this.echarts_instance = echarts.init(document.querySelector('#echarts'))
}else{
//刷新高度
this.echarts_instance.resize()
}
var option = {}
this.echarts_instance.setOption(option)
代码
//模拟legend高度
getLegendHeight(name_list,config = {}){
//参数初始化
var width = config.width? config.width : document.body.clientWidth
var itemGap = config.itemGap? config.itemGap : 10
var itemWidth = config.itemWidth? config.itemWidth : 25
var itemHeight = config.itemHeight? config.itemHeight : 14
var padding = config.padding? config.padding : 5
var fontSize = config.fontSize? config.fontSize : 12
//创建元素 装载所有图例的容器
var legend_box = document.createElement('div')
//设定容器宽度(echarts容器的宽度)
legend_box.style.width = width + 'px'
//遍历图例名称,模拟生成图例元素
name_list.forEach(name=>{
//图例项容器
var legend_item = document.createElement('div')
legend_item.style.display = 'inline-block'
legend_item.style['margin-right'] = itemGap + 'px'
//图标元素
var icon_item = document.createElement('span')
icon_item.style.display = 'inline-block'
icon_item.style.width = (itemWidth + padding*2) + 'px'
icon_item.style.height = (itemHeight + padding*2) + 'px'
//名称容器
var name_item = document.createElement('span')
name_item.innerHTML = name
name_item.style.fontSize = fontSize + 'px'
//添加到图例容器中
legend_box.appendChild(icon_item)
legend_box.appendChild(name_item)
})
//插入到页面中
document.body.appendChild(legend_box)
//保存高度
var legend_height = legend_box.clientHeight
//从页面中移除
document.body.removeChild(legend_box)
//返回数据
return legend_height
}
Echarts 图例组件的更多相关文章
- 转:ECharts图表组件入门教程之Theme:ECharts图表的皮肤是什么?如何给图表换主题(皮肤)Theme?
一.什么是ECharts图表的皮肤(主题)? 针对这个问题我只能这样回答,ECharts图表的主题(皮肤)就犹如人的衣服一样,是用来衬托和渲染主体,使其变得更加美观好看的目的.你去过ECharts图表 ...
- vue-cli ——解决多次复用含有Echarts图表组件的问题
在vue项目里,组件复用是一件很开心的事,可以节省很多时间去排版,达到事半功倍效果,但是昨晚在vue-cli项目里组件复用时发现基于Echarts图表的组件不能够复用,昨晚捯饬了很久,终于还是解决了这 ...
- 转:ECharts图表组件之简单关系图:如何轻松实现另类站点地图且扩展节点属性实现点击节点页面跳转
站点地图不外乎就是罗列一个网站的层次结构,提炼地讲就是一个关系结构图.那么我们如何巧用ECharts图表组件内的简单关系结构图来实现一个站点的地图结构呢?另外如何点击某个节点的时候实现页面跳转呢? 针 ...
- vue echarts vue-echarts组件使用
1.git地址 https://github.com/ecomfe/vue-echarts 2.使用 (1)安装 npm install vue-echarts --save-dev (2)引入 im ...
- ECharts grid组件离容器的距离
ECharts grid组件离容器的距离 由 Carrie 创建, 最后一次修改 2017-09-04 grid.left | string, number [ default: '10%' ...
- 在Vue中echarts可视化组件的使用
echarts组件官网地址:https://echarts.apache.org/examples/zh/index.html 1.找到脚手架项目所在地址,执行cnpm install echarts ...
- echarts之简单的入门——【二】再增加一个柱状图和图例组件
echarts之简单的入门——[一]做个带时间轴的柱状统计图 现在需求说,我需要知道日答题总次数和活跃人数,那么我们如何在上面的图表中增加一个柱状图呢? 如果你看过简单入门中的配置项手册中series ...
- ECharts公共组件:title详解、 tooltip详解、toolbox详解、legend详解、dataZoom详解、visualMap全解
1. Title mytextStyle={ color:"#333", //文字颜色 fontStyle:"norm ...
- vue2.0 自定义 饼状图 (Echarts)组件
1.自定义 图表 组件 Echarts.vue <!-- 自定义 echart 组件 --> <template> <div> <!-- echart表格 ...
- 【小程序】---- 封装Echarts公共组件,遍历图表实现多个饼图
一.问题描述: 在小程序的项目中,封装公共的饼图组件,并在需要的页面引入使用.要求一个页面中有多个饼图,动态渲染不同的数据. 二.效果实现: 1. 查看——小程序使用Echarts的方式 2. 封装饼 ...
随机推荐
- PYRAFORMER: 用于长时间序列建模和预测的低复杂度金字塔注意力《PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTENTION FOR LONG-RANGE TIME SERIES MODELING AND FORECASTING》(金字塔注意力模块机制、PAM、CSCM、多尺度)
今天是2022年10月1日,今天重读一遍这篇论文. 10月1日16:48,上次读是4月20日,时间过得好快. 论文:PYRAFORMER: LOW-COMPLEXITY PYRAMIDAL ATTEN ...
- JavaScript – Web Worker
前言 在上一篇 << 单线程 与 执行机制 >> 中, 我们提到了 Web Worker. 它的诞生是为了解决 JS 主线程执行耗时计算时, 导致 UI 无法及时更新的卡死现象 ...
- C++ STL stack容器——栈
stack容器 基本概念 stack是一种先进后出的数据结构,它只有一个出口,形式如下图所示.stack容器允许新增元素,移除元素,取得栈顶元素,但是除了最顶端外,没有任何地方可以存取stack的娶她 ...
- dotnet定义扩展方法
// 扩展方法 // 1.创建静态类静态方法 2. 在静态方法中参数中使用 this 关键字指定需要扩展的类 // 密封类 不能直接继承,通过扩展方法,拿到父类的属性和方法进行扩展补充
- 在 KubeSphere 中部署高可用 Redis 集群
作者:余生大大,大数据开发工程师,云原生爱好者,KubeSphere 社区用户. 前言 Redis 是在开发过程中经常用到的缓存中间件,在生产环境中为了考虑稳定性和高可用一般为集群模式的部署. 常规部 ...
- docker实战: vue+java+uniapp部署到阿里云服务器详解(此文没有使用宝塔面板部署),附带各种坑处理
一.部署前准备工具以及注意事项: 项目来源:https://gitee.com/ZhongBangKeJi/crmeb_java?_from=gitee_search 官方部署文档:https://d ...
- 一些常用的jQuery方法1_20220128
1.jQuery.merge()方法 $.merge() 函数用于合并两个数组内容到第一个数组.*$*.merge( first, second ) $(function () { var arr = ...
- Nginx 安全配置
server { listen 8089; server_name 10.5.210.203:8089; #charset koi8-r; #access_log logs/host.access.l ...
- 熟悉使用DOS操作命令
DOS操作实验 一.实验目的 DOS是市场上早期获得巨大成功的桌面操作系统,现在很多同学都不太熟悉.本实验的目的就是让同学们读者从操作系统理论的观点来重新认识它们,了解和掌握DOS有关用户接口的特点. ...
- Docker容器制作DockerFile
Docker换国内源和简单操作 vim /etc/docker/daemon.json { "registry-mirrors": ["http://hub-mirror ...