echarts图例legend选中状态动态设置 selected

本文介绍如何在ECharts中动态加载图例,并默认只显示前两个指标,其余指标默认为灰色。通过js动态设置legend.selected配置项实现图例的默认状态控制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

功能前端页面展示,需要对所有指标的图例默认选中状态只显示前两个,其他指标的图例状态默认为灰色。
1、因为所有的指标为动态加载的,因此图例legend选中状态也要通过js进行动态加载,从官方的文档里可以查询到legend.selected配置项可以设置图例的默认状态。
官方示例,true为选中展示系列,false为灰色默认不展示该系列:
selected: {
    // 选中'系列1'
    '系列1': true,
    // 不选中'系列2'
    '系列2': false
}
 
2、js代码
//图例配置项
legend: {
x: 'center',
y: 'bottom',
data: $scope.key_value,
selected:{}
},
 
//js动态加载
var selected_item = {};
for(i =0; i < $scope.key_value.length; i++){
var key_name = $scope.key_value[i];
if(i >1){
selected_item[key_name] = false;
}else{
selected_item[key_name] = true;
}
};
option.legend.selected = selected_item;
//标红是踩过的坑 原始写法selected_item.key_name = false; 会报错,原因是: json 解析时 key_name 都按字符串解析,不识别变量.
 
下面附加一下动态给对象添加属性和值得两种常用法法
              function Person(){};
              var person = new Person();
              person.name = 'yy';
              person.gender = 'girl';
              console.log(person.name+','+person.gender);//yy,girl
              delete person.name;//删除属性
              console.log(person.name);//undefined
  //            变式
              function Person(){};
             var person = new Person();
             person['name'] = 'yy';
             person['gender'] = 'girl';
             console.log(person.name+','+person.gender);//yy,girl
             delete person.name;//删除属性
             console.log(person.name);//undefined        
 

转载于:https://www.cnblogs.com/hanlengyao/p/10249798.html

<think>我们正在处理关于ECharts中如何隐藏图例legend)的问题。根据用户需求,用户希望在一开始加载图表时显示某些图例项,点击时才显示。同时,用户直接询问隐藏legend设置方法。根据引用内容,我们可以总结出几种隐藏图例的方法:1.通过设置legend的`show`属性为`false`来完全隐藏整个图例组件(引用[2]中提到了legend配置项,虽然没有直接给出show属性,但官方文档中肯定有)。2.通过设置图例项(series)的某个系列(series)的`legendHoverLink`属性来控制是否可以通过图例触发交互,但这并直接隐藏图例。3.通过设置图例的`data`属性,只显示部分图例项(引用[1]中提到默认展示某个字段,这通常是通过控制图例的data数组来实现,只显示需要的项)。4.通过图例的`selectedMode`和`selected`属性来控制图例的初始选中状态,但注意,这并会隐藏图例项本身,而是隐藏对应的数据系列(图形)。用户的需求是“一开始显示legend的某几个字段”,这意味着整个图例组件是显示的,但其中某几个图例显示(即隐藏)。在ECharts中,图例项是否显示是由`legend.data`数组决定的。如果某个系列的名称在`legend.data`中,那么该图例项就会显示。但通常,图例的数据会自动从series中获取。因此,我们可以通过设置`legend.data`为一个子集来只显示部分图例项。另一种方法是使用`legend.selected`。这个属性可以控制图例选中状态,如果设置为未选中,则对应的系列会显示(但图例项还在,只是变灰了)。这符合用户“隐藏”的要求。因此,正确的方法是:-在初始化图表时,设置`legend.data`只包含你想显示的图例项名称(包含要隐藏的)。-然后,通过图例组件的点击事件,动态添加被隐藏的图例项(这需要预先知道所有图例项,并在点击时修改legend.data并刷新图表)。但是,用户的问题只问如何隐藏,没有要求后续显示,所以我们可以先回答如何隐藏。根据引用[1]中的描述,他们在一开始展示(对比日期),这可以通过在legend的data中包含该字段来实现。例如:```javascriptlegend:{data:['系列1','系列2']//这里包含要隐藏的字段,比如'对比日期'}```另外,引用[2]提到了ECharts官方文档的legend配置项,我们可以参考官方文档。如果用户想要隐藏整个图例组件,则设置`show:false`。因此,回答应该包括:1.完全隐藏整个图例设置`legend.show:false`。2.隐藏部分图例项:在`legend.data`中只列出要显示的图例项。考虑到用户的需求是“隐藏某几个字段”,我们重点介绍第二种。同时,引用[3]和[4]展示了其他legend的配置,但和隐藏关系大,主要是格式化文本。下面我们组织回答。</think>### ECharts 隐藏图例Legend)的设置方法 在 ECharts 中隐藏图例主要通过以下两种方式实现: #### 方法 1:完全隐藏整个图例组件 ```javascript option = { legend: { show: false // 关键设置:关闭图例显示 }, // 其他配置项... }; ``` 效果:整个图例区域将被完全隐藏,适用于需要用户交互的场景[^2]。 #### 方法 2:部分隐藏特定图例项 ```javascript option = { legend: { data: ['销量', '库存'], // 只显示指定名称的图例项 // 注意:未列出的图例项将自动隐藏 }, series: [ { name: '销量', ... }, { name: '库存', ... }, { name: '成本', ... } // 此系列会出现在图例中 ] }; ``` 效果:仅显示 `data` 数组中指定的图例项,其他系列数据虽存在但图例显示(用户仍可通过其他交互触发显示)[^1]。 --- ### 进阶场景 1. **动态显示/隐藏** 通过 `myChart.dispatchAction()` 触发图例切换: ```javascript // 初始化隐藏"成本"图例 myChart.dispatchAction({ type: 'legendUnSelect', name: '成本' }); ``` 2. **响应图例点击事件** ```javascript myChart.on('legendselectchanged', function(params) { console.log('当前显示图例:', params.selected); }); ``` 3. **文本过长隐藏**(配合省略号) ```javascript legend: { formatter: function(name) { return name.length > 6 ? name.substr(0,6)+'...' : name; } } ```[^3][^4] > 提示:完整配置参考 [ECharts 官方文档](https://echarts.apache.org/zh/option.html#legend)[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值