echarts圆环 emphasis里的label和默认的label重叠在一起了,想不移到legend上去时默认的就不显示,移到legend时,就展示默认的
时间: 2024-03-18 22:39:04 浏览: 413
可以通过设置 `emphasis.label.show` 属性控制 `emphasis` 状态下的 label 显示或隐藏。同时,可以通过设置 `legend.formatter` 属性来控制图例中显示的文本内容。
具体来说,可以在 `series` 中设置 `label` 和 `emphasis.label` 属性,示例如下:
```js
series: [{
type: 'pie',
data: [...],
label: {
show: true,
formatter: '{b}: {c}',
position: 'inside',
textStyle: {
color: '#fff',
fontSize: 14
}
},
emphasis: {
label: {
show: false // emphasis 状态下不显示 label
}
}
}]
```
然后,在 `legend` 中设置 `formatter` 属性,通过 `{a}` 和 `{b}` 分别获取系列名称和数据项名称,示例如下:
```js
legend: {
formatter: '{a}: {b}' // 显示系列名称和数据项名称
}
```
这样就可以实现将默认的 label 显示在图例中,同时在 `emphasis` 状态下不显示 label。
相关问题
echarts圆环 emphasis里的label和默认的label重叠在一起了,都在中间展示,想不移到legend上去时默认的就不显示,移到legend时,就展示默认的
可以通过设置 `emphasis.label.show` 属性控制 `emphasis` 状态下的 label 显示或隐藏。同时,可以通过设置 `legend.formatter` 属性来控制图例中显示的文本内容。
具体来说,可以在 `series` 中设置 `label` 和 `emphasis.label` 属性,示例如下:
```js
series: [{
type: 'pie',
data: [...],
label: {
show: true,
formatter: '{b}: {c}',
position: 'inside',
textStyle: {
color: '#fff',
fontSize: 14
}
},
emphasis: {
label: {
show: false // emphasis 状态下不显示 label
}
}
}]
```
然后,在 `legend` 中设置 `formatter` 属性,通过 `{a}` 和 `{b}` 分别获取系列名称和数据项名称,并根据 `a` 是否为 `'seriesName'` 决定显示哪个文本,示例如下:
```js
legend: {
formatter: function(params) {
if (params.a === 'seriesName') {
return params.seriesName;
} else {
return params.b + ': ' + params.value;
}
}
}
```
这样就可以实现将默认的 label 显示在图例中,同时在 `emphasis` 状态下不显示 label。同时,在移动鼠标到图例上时,显示默认的 label。
echarts圆环 emphasis里的label和默认的label重叠在一起了,都在中间展示,想不移到legend上去时默认的就显示,移到legend时,就展示当前的
您可以通过设置 echarts 圆环图的 `label` 配置项中的 `formatter` 属性来实现您的需求。代码示例如下:
```javascript
option = {
// ... 其他配置项
series: [
{
name: "访问来源",
type: "pie",
radius: ["50%", "70%"],
avoidLabelOverlap: false,
label: {
show: false, // 隐藏默认的 label
position: "center",
formatter: function(params) {
// 判断是否在 legend 中被选中
if (params.seriesIndex === 0 && params.dataIndex === 0) {
return params.value; // 返回当前数据的 value
} else {
return ""; // 隐藏 label
}
}
},
emphasis: {
label: {
show: true,
position: "center",
formatter: function(params) {
return "{a|" + params.value + "}\n{b|" + params.name + "}"; // 格式化 label
},
rich: {
a: {
fontSize: 24,
fontWeight: "bold"
},
b: {
fontSize: 14
}
}
}
},
data: [
{ value: 335, name: "直接访问" },
{ value: 310, name: "邮件营销" },
{ value: 234, name: "联盟广告" },
{ value: 135, name: "视频广告" },
{ value: 1548, name: "搜索引擎" }
]
}
],
legend: {
// 配置 legend
data: ["直接访问", "邮件营销", "联盟广告", "视频广告", "搜索引擎"],
bottom: 10
}
};
```
在上述代码中,我们通过设置 `label` 的 `formatter` 属性,来判断当前数据是否在 legend 中被选中。如果是,则返回空字符串,隐藏 label;否则,返回当前数据的 value,展示默认的 label。同时,我们还通过设置 `legend` 配置项,将 legend 展示在图表底部。这样,当鼠标移到 legend 上时,可以展示当前数据的 label;当鼠标移到图表其他位置时,则展示默认的 label。
阅读全文