Echarts——饼图折线图柱状图相互转换

简介: Echarts——饼图折线图柱状图相互转换

前言

项目里使用的echarts版本是4.9.0,这里就用该版本做演示;

配置项: echarts option

codesandbox示例: Echarts数据转换

内容

鉴于echarts折线图和柱状图可以直接通过toolbox转换,所以我们只需要在toolbox中增加一个和饼图进行转换的方法即可

柱状图数据转换

barData() {
            let that = this
            let xAxisData = that.list.map((item) => item.name)
            let seriesData = that.list.map((item) => item.value)
            this.options = {
                title: {
                    ...dOptions.title,
                    text: this.title
                },
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'shadow'
                    }
                },
                toolbox: {
                    show: true,
                    feature: {
                        dataView: { readOnly: false },
                        myPie: {
                            show: true,
                            title: '切换为饼状图',
                            icon: 'path://M512 98.304C282.624 98.304 98.304 282.624 98.304 512s184.32 413.696 413.696 413.696c229.376 0 413.696-184.32 413.696-413.696S741.376 98.304 512 98.304zM888.832 491.52l-331.776 0 233.472-233.472C847.872 323.584 884.736 401.408 888.832 491.52zM512 888.832c-208.896 0-376.832-167.936-376.832-376.832 0-208.896 167.936-376.832 376.832-376.832 98.304 0 184.32 36.864 253.952 98.304l-266.24 266.24c-4.096 4.096-4.096 8.192-4.096 12.288 0 12.288 8.192 20.48 20.48 20.48l376.832 0C876.544 729.088 712.704 888.832 512 888.832z',
                            onclick: function () {
                                that.pieData()
                                that.initChart()
                            }
                        },
                        magicType: { show: true, type: ['bar', 'line'] },
                        restore: {},
                        saveAsImage: {}
                    }
                },
                xAxis: {
                    type: 'category',
                    data: xAxisData
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                        data: seriesData,
                        type: 'bar',
                        showBackground: true,
                        backgroundStyle: {
                            color: 'rgba(180, 180, 180, 0.2)'
                        }
                    }
                ]
            }
        },

折线图数据转换

lineData() {
            let that = this
            let xAxisData = that.list.map((item) => item.name)
            let seriesData = that.list.map((item) => item.value)
            this.options = {
                title: {
                    ...dOptions.title,
                    text: this.title
                },
                tooltip: {
                    trigger: 'axis',
                    axisPointer: {
                        type: 'shadow'
                    }
                },
                toolbox: {
                    show: true,
                    feature: {
                        dataView: { readOnly: false },
                        myPie: {
                            show: true,
                            title: '切换为饼状图',
                            icon: 'path://M512 98.304C282.624 98.304 98.304 282.624 98.304 512s184.32 413.696 413.696 413.696c229.376 0 413.696-184.32 413.696-413.696S741.376 98.304 512 98.304zM888.832 491.52l-331.776 0 233.472-233.472C847.872 323.584 884.736 401.408 888.832 491.52zM512 888.832c-208.896 0-376.832-167.936-376.832-376.832 0-208.896 167.936-376.832 376.832-376.832 98.304 0 184.32 36.864 253.952 98.304l-266.24 266.24c-4.096 4.096-4.096 8.192-4.096 12.288 0 12.288 8.192 20.48 20.48 20.48l376.832 0C876.544 729.088 712.704 888.832 512 888.832z',
                            onclick: function () {
                                that.pieData()
                                that.initChart()
                            }
                        },
                        magicType: { show: true, type: ['bar', 'line'] },
                        restore: {},
                        saveAsImage: {}
                    }
                },
                xAxis: {
                    type: 'category',
                    data: xAxisData
                },
                yAxis: {
                    type: 'value'
                },
                series: [
                    {
                        data: seriesData,
                        type: 'line',
                        smooth: true
                    }
                ]
            }
        },

饼图数据转换

pieData() {
            let that = this
            this.options = {
                title: {
                    ...dOptions.title,
                    text: this.title
                },
                toolbox: {
                    show: true,
                    feature: {
                        dataView: { readOnly: false },
                        myPie: {
                            show: true,
                            title: '切换为饼状图',
                            icon: 'path://M512 98.304C282.624 98.304 98.304 282.624 98.304 512s184.32 413.696 413.696 413.696c229.376 0 413.696-184.32 413.696-413.696S741.376 98.304 512 98.304zM888.832 491.52l-331.776 0 233.472-233.472C847.872 323.584 884.736 401.408 888.832 491.52zM512 888.832c-208.896 0-376.832-167.936-376.832-376.832 0-208.896 167.936-376.832 376.832-376.832 98.304 0 184.32 36.864 253.952 98.304l-266.24 266.24c-4.096 4.096-4.096 8.192-4.096 12.288 0 12.288 8.192 20.48 20.48 20.48l376.832 0C876.544 729.088 712.704 888.832 512 888.832z',
                            onclick: function () {
                                that.pieData()
                                that.initChart()
                            }
                        },
                        myBar: {
                            show: true,
                            title: '切换为柱状图',
                            icon: 'path://M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7',
                            onclick: function () {
                                that.barData()
                                that.initChart()
                            }
                        },
                        myLine: {
                            show: true,
                            title: '切换为折线图',
                            icon: 'path://M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4',
                            onclick: function () {
                                that.lineData()
                                that.initChart()
                            }
                        },
                        restore: {},
                        saveAsImage: {}
                    }
                },
                color: ['#007950', '#0097AF', '#376BB9', '#DF993E', '#AD475F'],
                tooltip: {
                    trigger: 'item',
                    formatter: '{b} : {c} ({d}%)'
                },
                legend: {
                    icon: 'circle',
                    right: 6,
                    top: '20%',
                    width: '50%',
                    itemWidth: 8,
                    itemHeight: 8,
                    textStyle: {
                        padding: 4,
                        rich: {
                            a: {
                                color: '#969AA8',
                                lineHeight: 30,
                                fontSize: 14,
                                width: 90
                            },
                            b: {
                                fontSize: 14,
                                fontWeight: 'bolder',
                                color: '#000'
                            }
                        }
                    },
                    data: that.list,
                    formatter: function (name) {
                        var total = 0
                        var target
                        for (var i = 0, l = that.list.length; i < l; i++) {
                            total += that.list[i].value
                            if (that.list[i].name == name) {
                                target = that.list[i].value
                            }
                        }
                        let nameResult = name.length > 6 ? name.slice(0, 6) + '...' : name
                        return '{b|' + ((target / total) * 100).toFixed(2) + '%}\n{a|' + nameResult + '}'
                    }
                },
                series: [
                    {
                        type: 'pie',
                        label: {
                            show: false
                        },
                        radius: [40, 75],
                        center: ['25%', '55%'],
                        data: that.list,
                        animationEasing: 'cubicInOut',
                        animationDuration: 2600
                    }
                ]
            }
        },

echarts初始化

initChart() {
            this.chart = echarts.init(this.$el, 'macarons')
            this.chart.resize()
            this.chart.clear()
            this.chart.setOption(this.options, true)
        }

学无止境,谦卑而行.

目录
相关文章
|
2月前
|
算法 Java Linux
java制作海报五:java 后端整合 echarts 画出 折线图,项目放在linux上,echarts图上不显示中文,显示方框口口口
这篇文章介绍了如何在Java后端整合ECharts库来绘制折线图,并讨论了在Linux环境下ECharts图表中文显示问题。
44 1
|
3月前
|
数据格式
ECharts 饼图
本章节我们将绘制饼图。
61 15
|
2月前
|
JSON JavaScript 前端开发
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
vue中使用echarts实现省市地图绘制,根据数据在地图上显示柱状图信息,增加涟漪特效动画效果
467 0
|
2月前
|
XML 前端开发 数据库
echarts饼图前后端代码SpringCloud+Vue3
echarts饼图前后端代码SpringCloud+Vue3
34 0
|
6月前
|
开发者 容器
Echarts饼图实现-今日进度-动态图
构建一个动态旋转的ECharts饼图,包括渐变色和动画效果。初始化ECharts实例,设置图表尺寸和背景,配置标题、颜色、系列数据及自定义渲染。利用`renderItem`绘制弧线和圆点,`getCirlPoint`计算坐标。通过`setInterval`和`draw`函数实现旋转动画。完整代码可在链接下载。
140 0
Echarts饼图实现-今日进度-动态图
|
5月前
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
【详细流程】vue+Element UI项目中使用echarts绘制圆环图 折线图 饼图 柱状图
417 0
|
2月前
|
小程序 前端开发 JavaScript
微信小程序图表制作利器:ECharts组件的使用与技巧
微信小程序图表制作利器:ECharts组件的使用与技巧
65 1
|
2月前
|
JavaScript
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
vue中使用echarts绘制双Y轴图表时,刻度没有对齐的两种解决方法
280 0
|
3月前
|
Web App开发 数据可视化 前端开发
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
本文介绍了ECharts的基本使用和语法格式,包括如何引入ECharts、创建容器、初始化echarts实例对象、配置option参数和一些基础图表的绘制方法。文章还提供了简单图表绘制和使用图例添加的示例代码,以及对ECharts特性和优势的概述。
Echart的使用初体验,Echarts的基本使用及语法格式,简单图表绘制和使用及图例添加【学习笔记】
|
4月前
|
小程序 JavaScript
微信小程序使用echarts图表(ec-canvas)
这篇文章介绍了在微信小程序中使用`ec-canvas`集成echarts图表的方法,包括解决加载时报错的问题、配置图表组件、以及在小程序页面中引入和使用这些图表组件的步骤。
503 1
微信小程序使用echarts图表(ec-canvas)

热门文章

最新文章