echarts设置多个legend样式

要实现的效果

要实现的效果很简单,给图例设置不同的legend图标,貌似设置icon就能解决,但是却不支持单独修改每个icon样式。
在这里插入图片描述

方案

方案一:设置legend.data.icon

缺点:icon大小无法单独设置(效果见下图)

在这里插入图片描述

legend: {
    bottom: 0,
    itemWidth: 10,
    itemHeight: 3, // 设置该值的话,square的宽度会变成3, 不设置的话rect是正方形
    textStyle: {
        color: '#434549',
        fontSize: 12
    },
    formatter (item) {
        return item + '      '
    },
    data: [
        {
            name: '大类资产配置收益',
            icon: 'square'
        }, {
            name: '行业配置收益',
            icon: 'square'
        }, {
            name: '行业选股收益',
            icon: 'square'
        }, {
            name: '交易收益',
            icon: 'square'
        }, {
            name: '总超额收益',
            icon: 'rect'
        }
    ]
}

方案二:设置多组legend

缺点:多组legend的位置需单独设置,无法统一居中(效果见下图)

在这里插入图片描述

// 图例类型名称
const legendLabels = [
    {
        type: 'square',
        labels: [
            '大类资产配置收益',
            '行业配置收益',
            '行业选股收益',
            '交易收益'
        ]
    }, {
        type: 'line',
        labels: ['总超额收益']
    }
]

// 根据图例类型名称生成图表的legend配置
const legendData = legendLabels.map((item, idx) => ({
    icon: 'rect',
    bottom: 0,
    itemWidth: 10,
    textStyle: {
        color: '#434549',
        fontSize: 12
    },
    formatter (v) {
        return v + '      '
    },
    data: item.labels,
    itemHeight: item.type === 'line' ? 3 : 10,
    ...(item.type === 'line' ? {
        right: '20%'
    } : {
        left: '20%'
    })
}))

// set echart legend options
legend: legendData

方案三:svg

大小和位置完美适配,最终采用该方案。

在这里插入图片描述

// 图表legend的svg图形
const legendSvg = {
    // 正方形 10*10
    rect: 'path://M-0.000,-0.000 L10.000,-0.000 L10.000,10.000 L-0.000,10.000 L-0.000,-0.000 Z',
    // 线条 10*3
    line: 'path://M-0.000,-0.000 L10.000,-0.000 L10.000,3.000 L-0.000,3.000 L-0.000,-0.000 Z'
}
legend: {
    data: [
        {
            name: '大类资产配置收益',
            icon: legendSvg.rect
        }, {
            name: '行业配置收益',
            icon: legendSvg.rect
        }, {
            name: '行业选股收益',
            icon: legendSvg.rect
        }, {
            name: '交易收益',
            icon: legendSvg.rect
        }, {
            name: '总超额收益',
            icon: legendSvg.line
        }
    ],
    bottom: 0,
    icon: 'rect',
    itemWidth: 10,
    itemHeight: 3,
    textStyle: {
        color: '#434549',
        fontSize: 12
    },
    formatter (item) {
        return item + '      '
    }
}

方案三为最终效果。

  • 8
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
回答: 在Echarts中,可以通过设置legend的相关属性来自定义样式。根据引用\[1\]中的代码,可以看到legend的配置包括图例的类型、图例的位置、图例的图标样式、图例的文字样式等。其中,可以使用formatter属性来设置图例的显示格式,使用textStyle属性来设置图例文字的样式。具体的设置方法可以参考Echarts官方文档中的样式设置教程\[2\]。 例如,可以使用formatter属性来设置图例的显示格式,使其展示出name、百分比和数量。可以使用textStyle.rich来自定义富文本样式,使三列文字的中间那一列展示为灰色,两边文字为黑色。具体的代码示例可以参考引用\[2\]中的代码。 另外,根据引用\[3\]中的代码,可以看到legend的配置还包括图例的方向、位置等属性。可以根据需要设置orient属性来调整图例的方向,设置right属性来调整图例的位置。 总之,通过设置legend的相关属性,可以自定义Echarts图表中图例的样式,包括显示格式、文字样式、图标样式等。具体的设置方法可以参考Echarts官方文档中的样式设置教程。 #### 引用[.reference_title] - *1* [echarts设置多个legend样式](https://blog.csdn.net/RogerWang_H5/article/details/122188239)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] - *2* *3* [echarts自定义legend样式](https://blog.csdn.net/changyana/article/details/126281275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v4^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值