vue中使用echarts(饼图显示引导线和文字以及图例+柱形图显示格式化的图例)超详细

1.饼形图

1.1图表示例

在这里入图片描述
在这里插入图片描述

1.1配置选项

//配置项手册
1.tooltip:鼠标hover上去显示的内容
2.lengend:对应图例,也就是请您咨询我们的业务人员、有条件承保、拒保、延期、其他
3.title:显示在饼形图内的,暂时未在图上进行显示,因我司ui未要求
 async drawConclusion(dom){
            let dateObj = {
                start_time_int:this.selectDate[0]/1000,
                end_time_int:this.selectDate[1]/1000
            }
            let HBData = {}
            await getHBStatistics(dateObj).then(res=>{
                let result = res.data
                if(result.status === 200){
                    let data = result.data
                    if(data.length > 0){
                        this.noDataHBText = ''
                        HBData =  data.map(item=>{
                        return {
                            name:item['conclusion_name'],
                            value:item['count'],
                            conclusion_code: item['conclusion_code']
                          }
                        })
                        // HBData.sort(this.sorted('value'))
                        // console.log(HBData,'获取到的数据');
                        const option = {
                            color:[ '#249EFF','#846BCE','#21CCFF','#0E42D2','#FDBF5E','#0081FF','#8291A9','#805EFD'],
                            tooltip: {
                                trigger: 'item'
                            },
                            legend: {
                                // x:"70%",
                                orient:'vertical',
                                y:"12%",
                                x:'68%',
                                icon:'circle'
                            },
                            title: {
                                // text: '总计',
                                x: '30%',
                                y: '38%',
                                textStyle: {
                                    fontWeight: 'normal',
                                    color: '#4E5969',
                                    fontSize: 14
                                },
                                // subtext:'928531',
                                subtextStyle: {
                                    fontSize: 16,
                                    fontWeight: 'bold',
                                    
                                },
                            },
                            series: [
                                {
                                name: '核保结论',
                                type: 'pie',
                                radius: ['50%', '70%'],
                                center: ['35%', '50%'],
                                avoidLabelOverlap: true,   //是否启用防止标签重叠策略
                                minAngle: 20,//最小的扇区角度(0 ~ 360),用于防止某个值过小导致扇区太小影响交互
                                emphasis:{
                                    shadowBlur: 10,
                                    shadowOffsetX: 0,
                                    shadowColor: 'rgba(0, 0, 0, 0.5)'
                                },
                                label: {
                                    show: false,
                                    normal: {
                                        show: true,
                                        lineHeight:10,
                                        // position: 'inside',
                                        formatter: '{d}%\n\n{c}', //自定义显示格式(b:name, c:value, d:百分比)
                                        fontSize: 12   // 字体大小
                                    },
                                    rich:{

                                    }
                                },
                                emphasis: {
                                    label: {
                                        show: true,
                                        fontSize: 12,
                                        fontWeight: 'bold',
                                    }
                                },
                                labelLine: {
                                    length: 20,  // 挨着图例的直线的长度
                                    length2: 50  // 挨着文字的直线的长度
                                    // normal:true
                                },
                                itemStyle: {
                                    borderColor: '#fff',
                                    borderWidth: 2
                                },
                                data:HBData,
                                }
                            ]
                        };
                        // 使用刚指定的配置项和数据显示图表。
                        dom.setOption(option);
                        //随着屏幕大小调节图表
                        window.addEventListener("resize", () => {
                            dom.resize();
                        });
                    }else{
                        this.noDataHBText = this.tips
                    }
                    
                }else{
                    this.$message({
                      message:result.message,
                      type:'warning',
                      duration:2000,
                      showClose: true
                    })
                }
            })
            
        },

2.柱形图

2.1图表示例

在这里插入图片描述

2.2配置选项

async drawChannel(dom){
             let dateObj = {
                start_time_int:this.selectDate[0]/1000,
                end_time_int:this.selectDate[1]/1000
            }
            let channelNameData = []
            let channelValueData = []
            await getchannelCallStatistics(dateObj).then(res=>{
                let result = res.data
                if(result.status === 200){
                    let data = result.data
                    console.log(data.length);
                    if(data.length > 0){
                        this.noDataChannelText = ''
                        data.map(item=>{
                            channelNameData.push(item.channel_no)
                            channelValueData.push(item.count)
                        })
                        const option = {
                            tooltip: {
                                trigger: 'axis',
                                axisPointer: {
                                type: 'shadow'
                                }
                            },
                            grid: {
                                left: '3%',
                                right: '4%',
                                bottom: '0%',
                                top:'7%',
                                containLabel: true
                            },
                            
                            xAxis: {
                                type: 'category',
                                data: channelNameData,
                            },
                            yAxis: {
                                type: 'value',
                                // min:0,
                                // max:29034,
                                // splitNumber:5000,
                                boundaryGap : [ 0.2, 0.2 ]
                            },
                            series: [
                                {
                                    name: '调用渠道',
                                    type: 'bar',
                                    barWidth: '20%',
                                    data: channelValueData,
                                    
                                },
                            ]
                        }
                        // 使用刚指定的配置项和数据显示图表。
                        dom.setOption(option);
                        //随着屏幕大小调节图表
                        window.addEventListener("resize", () => {
                            dom.resize();
                        });
                    }else{
                        this.noDataChannelText = this.tips
                    }
                }else{
                    this.$message({
                      message:result.message,
                      type:'warning',
                      duration:2000,
                      showClose: true
                    })
                }
            })
        }
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue使用ECharts绘制饼图的步骤如下: 1. 首先,需要在Vue组件引入ECharts库。可以通过以下代码将ECharts库引入到组件: ```javascript import echarts from 'echarts' ``` 2. 在组件的data属性定义一个chart变量和chartData变量。chart变量用于存储ECharts实例,chartData变量用于存储饼图的数据。示例代码如下: ```javascript data() { return { chart: null, chartData: { // 这里是你要绘制的饼图数据 } } } ``` 3. 在组件的mounted钩子函数,创建一个ECharts实例,并将其挂载到DOM元素上。然后使用chart.setOption()方法配置和渲染图表。示例代码如下: ```javascript mounted() { // 创建一个ECharts实例 this.chart = echarts.init(this.$refs.chart) // 在ECharts实例配置图表 this.chart.setOption(this.getOption()) } ``` 4. 在组件的methods定义一个getOption()方法,用于返回ECharts的配置项。在该方法,可以设置饼图的样式、标题、图例和数据展示等属性。示例代码如下: ```javascript methods: { getOption() { return { // 这里是你的ECharts配置项 } } } ``` 5. 在组件的template,通过ref属性将DOM元素与ECharts实例进行关联。示例代码如下: ```html <div ref="chart"></div> ``` 综上所述,以上是在Vue使用ECharts绘制饼图的基本步骤。你可以根据需要自定义饼图的样式、标题、图例和数据展示等属性来配置ECharts实例。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [Vue+Echarts: 实现饼状图的详细教程](https://blog.csdn.net/qijing19991210/article/details/129446781)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [vue引入Echarts饼图详解](https://blog.csdn.net/m0_46309087/article/details/122511971)[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^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值