vue中给echarts图的legend显示添加百分比并给环形图中间添加文字

<div id="chartmainbarCircle"></div>
    data(){
        return{
        // 环形图数据
            data8:[
                {value: 335, name: '优秀'},
                {value: 310, name: '良好'},
                {value: 234, name: '合格'},
                {value: 144, name: '不合格'},
            ]
        }
    },
    mounted(){  //echarts的自适应设置
        this.drawLine()
        this.resizeEcharts = () => {
          this.$echarts.init(document.getElementById("chartmainbar8")).resize();
        }
        // window.onresize = this.myChart.resize;
        window.addEventListener("resize", this.resizeEcharts);
    },
    methods:{
        drawLine: function(){
            let chartmainbar8 =  this.$echarts.init(document.getElementById("chartmainbarCircle"));

            const list = this.data8 //需要提前定义一个list放入圆环图中的数据,否则legend里面 
                                  //的formatter函数是访问不到vue里面的data数据的
            chartmainbar8.setOption({
                    tooltip: {
                    trigger: 'item',
                    formatter: '{a} <br/>{b}: {c} ({d}%)'
                },
                legend: {
                    itemWidth:10,   
                    itemHeight:10,
                    icon:'circle', 
                    x: 'right',
                    y:'center',
                    orient: 'vertical', //设置图例排列纵向显示
                    align:'left',       //设置图例中文字位置在icon标识符的右侧
                    itemGap:20,         //设置图例之间的间距
                    padding:[0,0,0,10], //设置图例与圆环图之间的间距
                    bottom:'55%',       //距离下边距
                    formatter:function(name){  //该函数用于设置图例显示后的百分比
                        var data = list
                        var total = 0;
                        var value;
                        list.forEach((item)=>{
                            total += item.value;
                            if (item.name == name) {
                                value = item.value;
                            }
                        })
                        var p = Math.round(((value / total) * 100)); //求出百分比
                        return `${name}  ${p}%`;  //返回出图例所显示的内容是名称+百分比
                    },
                    textStyle: { //图例文字的样式
                            color: '#ADADAD',
                            fontSize: 12
                    },
                    data: ['优秀', '良好', '合格','不合格'],
                },
                graphic: [  //为环形图中间添加文字
                    {
                    type: "text",
                    left: "center",
                    top: "center",
                    style: {
                        text: "单位名称",
                        textAlign: "center",
                        fill: "#32373C",
                        fontSize: 18,
                    },
                    },
                ],
                series: [{
                        name: '数据占比',
                        type: 'pie',
                        radius: ['40%', '62%'],
                        data: this.data8,
                    }
                ],
                color:["#33D4BD","#BDA1FF","#71BCFA","#FC8A8C"]
                }
            );
        }

    }
    #chartmainbarCircle{
         width: 100%!important;
         height:225px!important;
         float: left;
    }

呈上效果图:

也可给图设置渐变色:

只需要将上面的color,变为如下,,,,

                color: [new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
                    offset: 0,
                    color: '#BE9DF6'
                    },
                    {
                        offset: 0.9,
                        color: '#60BFFF'
                    }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
                        offset: 0,
                        color: '#EA8DD9'
                    },
                    {
                        offset: 0.9,
                        color: '#FF8E8E'
                    }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
                        offset: 0,
                        color: '#81DCD4'
                    },
                    {
                        offset: 0.9,
                        color: '#18D2BA'
                    }]), new echarts.graphic.LinearGradient(1, 1, 0, 0, [{
                        offset: 0,
                        color: '#FEDDEA'
                    },
                    {
                        offset: 0.9,
                        color: '#E7E8ED'
                 }])]

Vue ECharts 柱状添加点击事件,你可以按照以下步骤进行操作: 1. 首先,确保你已经在 Vue 项目安装了 ECharts。可以使用 npm 或 yarn 进行安装。 2. 在需要使用 ECharts 的组件引入 EChartsECharts 主题: ```javascript import echarts from 'echarts' import 'echarts/theme/macarons' // 可以选择其他主题 ``` 3. 创建一个柱状的 DOM 元素,并在 mounted 钩子函数初始化 ECharts 实例: ```javascript mounted() { this.initChart() }, methods: { initChart() { this.chart = echarts.init(this.$refs.chartContainer, 'macarons') // 使用刚引入的主题 // 初始化表配置项 const options = { // 配置项... } this.chart.setOption(options) // 添加点击事件 this.chart.on('click', this.handleClick) }, handleClick(params) { console.log(params) // 输出点击事件的参数 // 处理点击事件的逻辑 } } ``` 4. 在模板添加一个包裹柱状的容器,并使用 ref 属性引用它: ```html <template> <div> <div ref="chartContainer" style="width: 100%; height: 400px;"></div> </div> </template> ``` 这样,你就可以在 Vue ECharts 柱状添加点击事件了。当柱状被点击时,`handleClick` 方法会被触发,并且会输出点击事件的参数。你可以在 `handleClick` 方法处理点击事件的逻辑。记得在组件销毁时移除事件监听: ```javascript beforeDestroy() { if (this.chart) { this.chart.off('click', this.handleClick) this.chart.dispose() } } ``` 希望对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

suoh's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值