echart设置将图例文字放置在图例图标icon中

本文介绍了如何使用ECharts将图例的文字放置在图例的图标内部,通过调整配置项legend,实现了图例文字与图例图标的一体化展示。示例代码和ECharts官方文档链接提供了详细实现方法。
部署运行你感兴趣的模型镜像

将图图表的图例设置如图所示,将图例文字放置在图例图标中。

原图图表是这样的:https://echarts.apache.org/examples/zh/editor.html?c=line-stack

option = {
    title: {
        text: '折线图堆叠'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        data: ['邮件营销', '联盟广告', '视频广告', '直接访问', '搜索引擎']
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '邮件营销',
            type: 'line',
            stack: '总量',
            data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
            name: '联盟广告',
            type: 'line',
            stack: '总量',
            data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
            name: '视频广告',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
            name: '直接访问',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
        },
        {
            name: '搜索引擎',
            type: 'line',
            stack: '总量',
            data: [820, 932, 901, 934, 1290, 1330, 1320]
        }
    ]
};

我们仅仅设置legend选项即可:

https://echarts.apache.org/examples/zh/editor.html?c=line-stack

option = {
    title: {
        text: '折线图堆叠'
    },
    tooltip: {
        trigger: 'axis'
    },
    legend: {
        icon: 'none',/*将图例图标icon设置成无*/
        data: [
                    {
              name: '邮件营销',
              textStyle: {
                padding: 4,/*设置图例文字的位置*/
                borderRadius: 3,
                color: '#E3F2FD',
                backgroundColor: '#D0BA25',/*设置图例文字的背景*/
                fontSize: 16
              }
            },
             {
              name: '联盟广告',
              textStyle: {
                padding: 4,
                borderRadius: 3,
                color: '#E3F2FD',
                backgroundColor: '#FF8635',
                fontSize: 16
              }
            },
            {
              name: '视频广告',
              textStyle: {
                padding: 4,
                borderRadius: 3,
                color: '#E3F2FD',
                backgroundColor: '#01af3d',
                fontSize: 16
              }
            },
            {
              name: '直接访问',
              textStyle: {
                padding: 4,
                borderRadius: 3,
                color: '#E3F2FD',
                backgroundColor: '#be4201',
                fontSize: 16
              }
            },
             {
              name: '搜索引擎',
              textStyle: {
                padding: 4,
                borderRadius: 3,
                color: '#E3F2FD',
                backgroundColor: '#00a8e1',
                fontSize: 16
              }
            },
          ]
    },
    grid: {
        left: '3%',
        right: '4%',
        bottom: '3%',
        containLabel: true
    },
    toolbox: {
        feature: {
            saveAsImage: {}
        }
    },
    xAxis: {
        type: 'category',
        boundaryGap: false,
        data: ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
    },
    yAxis: {
        type: 'value'
    },
    series: [
        {
            name: '邮件营销',
            type: 'line',
            stack: '总量',
            data: [120, 132, 101, 134, 90, 230, 210]
        },
        {
            name: '联盟广告',
            type: 'line',
            stack: '总量',
            data: [220, 182, 191, 234, 290, 330, 310]
        },
        {
            name: '视频广告',
            type: 'line',
            stack: '总量',
            data: [150, 232, 201, 154, 190, 330, 410]
        },
        {
            name: '直接访问',
            type: 'line',
            stack: '总量',
            data: [320, 332, 301, 334, 390, 330, 320]
        },
        {
            name: '搜索引擎',
            type: 'line',
            stack: '总量',
            data: [820, 932, 901, 934, 1290, 1330, 1320]
        }
    ]
};

echart文档API可以参考这里:https://echarts.apache.org/zh/option.html#legend.textStyle

 

您可能感兴趣的与本文相关的镜像

PyTorch 2.6

PyTorch 2.6

PyTorch
Cuda

PyTorch 是一个开源的 Python 机器学习库,基于 Torch 库,底层由 C++ 实现,应用于人工智能领域,如计算机视觉和自然语言处理

ECharts 中,图例(legend)的图标icon)和文字(text)默认是作为一个整体进行交互的。如果需要实现 **图例图标不可点击**,但 **图例文字可点击** 的效果,可以通过自定义图例内容和事件绑定来实现。 ECharts 本身并不直接支持对图例中的图标文字分别绑定不同的点击行为,但可以借助 `legend.formatter` 和 `legend.icon` 配合 `legendselectchanged` 事件实现自定义逻辑。以下是一个实现思路: ### 自定义图例格式并禁用图标点击 通过 `formatter` 函数可以控制图例的显示内容,例如添加图标文字之间的分隔符,甚至插入空白字符来模拟图例结构。同时,可以通过 `icon` 属性设置为自定义路径,使得图标不可交互。 ```javascript option = { legend: { data: ['图例1', '图例2'], formatter: function(name) { return ' ' + name; // 添加空格,模拟图标文字的间距 }, icon: 'path://M0 0H10V10H0z', // 自定义图标路径,可设为不可点击的样式 itemStyle: { borderWidth: 0 } }, xAxis: { type: 'category', data: ['A', 'B', 'C'] }, yAxis: {}, series: [ { name: '图例1', type: 'line', data: [10, 20, 30] }, { name: '图例2', type: 'line', data: [15, 25, 35] } ] }; ``` ### 自定义点击事件逻辑 由于 ECharts 原生图例不支持图标文字分别绑定点击事件,因此可以通过监听 `legendselectchanged` 事件来手动控制图例项的状态。在此基础上,可以结合 DOM 操作实现更精细的交互逻辑。 ```javascript myChart.off('legendselectchanged').on('legendselectchanged', function(params) { const isSelected = params.selected[params.name]; if (!isSelected) { // 手动恢复状态,如果图标被点击 myChart.setOption({ legend: { selected: { [params.name]: true } } }); } }); ``` 通过这种方式,可以实现点击图例文字时触发图例状态切换,而点击图标区域则不触发状态变化,从而实现“图标不可点击,文字可点击”的效果。 ### 图例样式与交互优化建议 - 使用 `icon: 'path://'` 定义矢量图标的路径,避免使用图片或 base64 编码,以确保与 ECharts 内置图例行为的一致性 [^2]。 - 若需要更复杂的图例交互行为,建议使用自定义图例组件,通过 HTML 和 CSS 构建,脱离 ECharts 原生图例限制 [^4]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值