vue中如何使用echarts和echarts-gl实现三维折线图和三维柱状图

 一、vue中使用三维折线图

效果图:

二、使用步骤 

1.引入库

安装echarts

在package.json文件中添加

 "dependencies": {
 	"echarts": "^5.1.2"
 	"echarts-gl": "^1.1.1",
 	//  "echarts-gl": "^2.0.8"
 },
npm install echarts-gl@1.1.1 --save

2.使用

完整代码如下(示例):

HTML代码
<template>
    <div :class="className" :style="{height:height,width:width}" />
</template>
js脚本代码
<script>
    import echarts from 'echarts'
    import "echarts-gl";
    require('echarts/theme/macarons') // echarts theme
    import resize from '@/views/dashboard/mixins/resize'

    export default {
        mixins: [resize],
        props: {
            className: {
                type: String,
                default: 'chart'
            },
            width: {
                type: String,
                default: '100%'
            },
            height: {
                type: String,
                default: '400px'
            },
            dataList: {
                type: Array,
                default: []
            }
        },
        data() {
            return {
                chart: null,
            }
        },
        mounted() {
            this.$nextTick(() => {
                this.initChart()
            })
        },
        beforeDestroy() {
            if (!this.chart) {
                return
            }
            this.chart.dispose()
            this.chart = null
        },
        watch: {
            dataList(val, oldVal) {//普通的watch监听
                this.initChart()
            }
        },
        methods: {
            initChart() {


                let data = [
                    [0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
                    [0, 0, 1, 1, 5, 7, 9, 11, 12, 13, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17],
                    [5, 6, 9, 9, 9, 11, 11, 11, 13, 13, 14, 14, 14, 16, 16, 16, 16, 16, 18, 18, 18, 18],
                    [13, 17, 22, 22, 26, 33, 34, 36, 36, 37, 39, 40, 40, 42, 42, 42, 43, 43, 44, 44, 44, 44],
                    [13, 16, 17, 27, 35, 45, 49, 53, 58, 61, 65, 66, 68, 69, 71, 73, 73, 73, 74, 74, 74, 74]
                ]
                let dataX = ['1/27', '1/28', '1/29', '1/30', '1/31', '2/1', '2/2', '2/3', '2/4', '2/5', '2/6', '2/7', '2/8', '2/9', '2/10', '2/11', '2/12', '2/13', '2/14', '2/15', '2/16', '2/17']
                let dataY = ['生产', '收购', '运输', '销售', '消费']
                var vdata = []
                for (var i = 0; i < dataY.length; i++) {
                    vdata[i] = []
                }
                for (var t = 0; t < dataY.length; t++) {
                    var y = dataY[t];
                    for (var k = 0; k < data[0].length; k++) {
                        for (var p = 0; p < dataX.length; p++) {
                            var x = dataX[p];
                            var z = data[t][p];
                            vdata[t].push([x, y, z]);
                        }
                        break;
                    }
                }
                this.chart = echarts.init(this.$el, 'macarons')
                this.chart.setOption(
                    {
                        xAxis3D: {
                            type: 'category',
                            name: '',
                            data: dataX,
                            axisLabel: {
                                show: true,
                                interval: 0  //使x轴都显示
                            }
                        },
                        yAxis3D: {
                            type: 'category',
                            name: '',
                            data: dataY,
                            axisLabel: {
                                show: true,
                                interval: 0   //使y轴都显示
                            }
                        },
                        zAxis3D: {
                            type: 'value',
                            name: ''
                        },
                        //图例
                        legend: {
                            orient: 'vertical',
                            right: 50,
                            top: 200,
                            icon: 'roundRect',
                            textStyle: {
                                color: '#FFFFFF'
                            }
                        },
                        tooltip: {
                            show: true
                        },
                        grid3D: {
                            boxWidth: 300,
                            boxHeight: 120,
                            boxDepth: 200,
                            axisLine: {
                                show: true,
                                interval: 0,
                                lineStyle: {
                                    color: '#FFFFFF'
                                }
                            },
                            viewControl: {
                                distance: 400
                            }
                        },
                        series: [
                            {
                                type: 'scatter3D',
                                name: '生产',
                                itemStyle: {
                                    color: 'rgb(165,  0, 38)'
                                },
                                label: {  //当type为scatter3D时有label出现
                                    show: true,
                                    position: 'top',   //标签的位置,也就是data中数据相对于线在哪个位置
                                    distance: 0,
                                    textStyle: {
                                        color: '#FFFFFF',
                                        fontSize: 12,
                                        borderWidth: 0,
                                        borderColor: '#FFFFFF',
                                        backgroundColor: 'transparent'
                                    }
                                },
                                data: vdata[0]
                            },
                            {
                                type: 'scatter3D',
                                name: '收购',
                                itemStyle: {
                                    color: 'rgb(215, 48, 39)'
                                },
                                label: {
                                    show: true,
                                    position: 'bottom',
                                    distance: 0,
                                    textStyle: {
                                        color: '#FFFFFF',
                                        fontSize: 12,
                                        borderWidth: 0,
                                        borderColor: '#FFFFFF',
                                        backgroundColor: 'transparent'
                                    }
                                },
                                data: vdata[1]
                            },
                            {
                                type: 'scatter3D',
                                name: '运输',
                                itemStyle: {
                                    color: 'rgb(254,224,144)'
                                },
                                label: {
                                    show: true,
                                    position: 'bottom',
                                    distance: 0,
                                    textStyle: {
                                        color: '#FFFFFF',
                                        fontSize: 12,
                                        borderWidth: 0,
                                        borderColor: '#FFFFFF',
                                        backgroundColor: 'transparent'
                                    }
                                },
                                data: vdata[2]
                            },
                            {
                                type: 'scatter3D',
                                name: '销售',
                                itemStyle: {
                                    color: 'rgb(255,255,191)'
                                },
                                label: {
                                    show: true,
                                    position: 'top',
                                    distance: 0,
                                    textStyle: {
                                        color: '#FFFFFF',
                                        fontSize: 12,
                                        borderWidth: 0,
                                        borderColor: '#FFFFFF',
                                        backgroundColor: 'transparent'
                                    }
                                },
                                data: vdata[3]
                            },
                            {
                                type: 'scatter3D',
                                name: '消费',
                                itemStyle: {
                                    color: 'rgb(224,243,248)'
                                },
                                label: {
                                    show: true,
                                    position: 'bottom',
                                    distance: 0,
                                    textStyle: {
                                        color: '#FFFFFF',
                                        fontSize: 12,
                                        borderWidth: 0,
                                        borderColor: '#FFFFFF',
                                        backgroundColor: 'transparent'
                                    }
                                },
                                data: vdata[4]
                            },
                            {
                                type: 'line3D', //当type为line3D时有label没有作用,官网没有label这个配置项
                                name: '生产',
                                lineStyle: {
                                    width: 8,   //线的宽度
                                    color: 'rgb(165,  0, 38)'   //线的颜色
                                },
                                data: vdata[0]   //线数据和点数据所需要的格式一样
                            },
                            {
                                type: 'line3D',
                                name: '收购',
                                lineStyle: {
                                    color: 'rgb(215, 48, 39)',  //线的颜色
                                    width: 8     //线的宽度
                                },
                                data: vdata[1]
                            },
                            {
                                type: 'line3D',
                                name: '运输',
                                lineStyle: {
                                    color: 'rgb(254,224,144)',
                                    width: 8
                                },
                                data: vdata[2]
                            },
                            {
                                type: 'line3D',
                                name: '销售',
                                lineStyle: {
                                    color: 'rgb(255,255,191)',
                                    width: 8
                                },
                                data: vdata[3]
                            },
                            {
                                type: 'line3D',
                                name: '消费',
                                lineStyle: {
                                    color: 'rgb(224,243,248)',
                                    width: 8
                                },
                                data: vdata[4]
                            },
                        ]
                    }
                )
            }
        }
    }
</script>

三、vue中使用三维柱状图

效果图

完整代码

<template>
    <div :class="className" :style="{height:height,width:width}" />
</template>

<script>
    import echarts from 'echarts'
    import "echarts-gl";
    require('echarts/theme/macarons') // echarts theme
    import resize from '@/views/dashboard/mixins/resize'

    export default {
        mixins: [resize],
        props: {
            className: {
                type: String,
                default: 'chart'
            },
            width: {
                type: String,
                default: '100%'
            },
            height: {
                type: String,
                default: '400px'
            },
            dataList: {
                type: Array,
                default: []
            }
        },
        data() {
            return {
                chart: null,
            }
        },
        mounted() {
            this.$nextTick(() => {
                this.initChart()
            })
        },
        beforeDestroy() {
            if (!this.chart) {
                return
            }
            this.chart.dispose()
            this.chart = null
        },
        watch: {
            dataList(val, oldVal) {//普通的watch监听
                this.initChart()
            }
        },
        methods: {
            initChart() {


                let data = [[0, 0, 5], [0, 1, 1], [0, 2, 0], [0, 3, 0], [0, 4, 0], [0, 5, 0], [0, 6, 0], [0, 7, 0], [0, 8, 0], [0, 9, 0], [0, 10, 0], [0, 11, 2], [0, 12, 4], [0, 13, 1], [0, 14, 1], [0, 15, 3], [0, 16, 4], [0, 17, 6], [0, 18, 4], [0, 19, 4], [0, 20, 3], [0, 21, 3], [0, 22, 2], [0, 23, 5], [1, 0, 7], [1, 1, 0], [1, 2, 0], [1, 3, 0], [1, 4, 0], [1, 5, 0], [1, 6, 0], [1, 7, 0], [1, 8, 0], [1, 9, 0], [1, 10, 5], [1, 11, 2], [1, 12, 2], [1, 13, 6], [1, 14, 9], [1, 15, 11], [1, 16, 6], [1, 17, 7], [1, 18, 8], [1, 19, 12], [1, 20, 5], [1, 21, 5], [1, 22, 7], [1, 23, 2], [2, 0, 1], [2, 1, 1], [2, 2, 0], [2, 3, 0], [2, 4, 0], [2, 5, 0], [2, 6, 0], [2, 7, 0], [2, 8, 0], [2, 9, 0], [2, 10, 3], [2, 11, 2], [2, 12, 1], [2, 13, 9], [2, 14, 8], [2, 15, 10], [2, 16, 6], [2, 17, 5], [2, 18, 5], [2, 19, 5], [2, 20, 7], [2, 21, 4], [2, 22, 2], [2, 23, 4], [3, 0, 7], [3, 1, 3], [3, 2, 0], [3, 3, 0], [3, 4, 0], [3, 5, 0], [3, 6, 0], [3, 7, 0], [3, 8, 1], [3, 9, 0], [3, 10, 5], [3, 11, 4], [3, 12, 7], [3, 13, 14], [3, 14, 13], [3, 15, 12], [3, 16, 9], [3, 17, 5], [3, 18, 5], [3, 19, 10], [3, 20, 6], [3, 21, 4], [3, 22, 4], [3, 23, 1], [4, 0, 1], [4, 1, 3], [4, 2, 0], [4, 3, 0], [4, 4, 0], [4, 5, 1], [4, 6, 0], [4, 7, 0], [4, 8, 0], [4, 9, 2], [4, 10, 4], [4, 11, 4], [4, 12, 2], [4, 13, 4], [4, 14, 4], [4, 15, 14], [4, 16, 12], [4, 17, 1], [4, 18, 8], [4, 19, 5], [4, 20, 3], [4, 21, 7], [4, 22, 3], [4, 23, 0], [5, 0, 2], [5, 1, 1], [5, 2, 0], [5, 3, 3], [5, 4, 0], [5, 5, 0], [5, 6, 0], [5, 7, 0], [5, 8, 2], [5, 9, 0], [5, 10, 4], [5, 11, 1], [5, 12, 5], [5, 13, 10], [5, 14, 5], [5, 15, 7], [5, 16, 11], [5, 17, 6], [5, 18, 0], [5, 19, 5], [5, 20, 3], [5, 21, 4], [5, 22, 2], [5, 23, 0], [6, 0, 1], [6, 1, 0], [6, 2, 0], [6, 3, 0], [6, 4, 0], [6, 5, 0], [6, 6, 0], [6, 7, 0], [6, 8, 0], [6, 9, 0], [6, 10, 1], [6, 11, 0], [6, 12, 2], [6, 13, 1], [6, 14, 3], [6, 15, 4], [6, 16, 0], [6, 17, 0], [6, 18, 0], [6, 19, 0], [6, 20, 1], [6, 21, 2], [6, 22, 2], [6, 23, 6]];

                let dataX = ['12a', '1a', '2a', '3a', '4a', '5a', '6a',
                    '7a', '8a', '9a', '10a', '11a',
                    '12p', '1p', '2p', '3p', '4p', '5p',
                    '6p', '7p', '8p', '9p', '10p', '11p'];
                let dataY = ['Saturday', 'Friday', 'Thursday',
                    'Wednesday', 'Tuesday', 'Monday', 'Sunday'];

                this.chart = echarts.init(this.$el, 'macarons')
                this.chart.setOption(
                    {
                        tooltip: {},
                        visualMap: {
                            max: 20,
                            inRange: {
                                color: [
                                    '#313695',
                                    '#4575b4',
                                    '#74add1',
                                    '#abd9e9',
                                    '#e0f3f8',
                                    '#ffffbf',
                                    '#fee090',
                                    '#fdae61',
                                    '#f46d43',
                                    '#d73027',
                                    '#a50026'
                                ]
                            }
                        },
                        xAxis3D: {
                            type: 'category',
                            data: dataX
                        },
                        yAxis3D: {
                            type: 'category',
                            data: dataY
                        },
                        zAxis3D: {
                            type: 'value'
                        },
                        grid3D: {
                            boxWidth: 200,
                            boxDepth: 80,
                            viewControl: {
                                // projection: 'orthographic'
                            },
                            light: {
                                main: {
                                    intensity: 1.2,
                                    shadow: true
                                },
                                ambient: {
                                    intensity: 0.3
                                }
                            }
                        },
                        series: [
                            {
                                type: 'bar3D',
                                data: data.map(function (item) {
                                    return {
                                        value: [item[1], item[0], item[2]]
                                    };
                                }),
                                shading: 'lambert',
                                label: {
                                    fontSize: 16,
                                    borderWidth: 1
                                },
                                emphasis: {
                                    label: {
                                        fontSize: 20,
                                        color: '#900'
                                    },
                                    itemStyle: {
                                        color: '#900'
                                    }
                                }
                            }
                        ]
                    }
                )
            }
        }
    }
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/775625.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】 解决 C++ 语言报错:Memory Leak

文章目录 引言 内存泄漏&#xff08;Memory Leak&#xff09;是 C 编程中常见且严重的内存管理问题之一。当程序分配了内存而没有正确释放&#xff0c;导致内存无法被重新利用时&#xff0c;就会发生内存泄漏。这种错误会导致程序占用越来越多的内存&#xff0c;最终可能导致系…

Zabbix动作与媒介

目录 前言 1. 动作的基本概念 2. 动作的常见用途 一. 环境准备 二. 创建动作 三. 添加媒介 前言 在 Zabbix 中&#xff0c;动作&#xff08;Actions&#xff09;用于在特定事件发生时执行一系列预定义的操作&#xff0c;比如发送通知、执行脚本等。动作通常与触发器&…

12款超良心好用APP推荐,每一款都值得下载!

AI视频生成&#xff1a;小说文案智能分镜智能识别角色和场景批量Ai绘图自动配音添加音乐一键合成视频https://aitools.jurilu.com/分享是奉献的果实&#xff0c;分享是快乐的前提。每天给小伙伴们分享自己认可的软件&#xff0c;也是莫大的幸福&#xff0c;今天获得12款好用的软…

扁鹊三兄弟的启示,保证系统稳定的秘诀

一、稳定性的重要性 1. 公司收益的角度 从公司收益的视角审视&#xff0c;系统不稳定可能会引发直接损失。例如&#xff0c;当系统突然出现故障导致交易中断时&#xff0c;可能造成交易款项的紊乱、资金的滞留或损失&#xff0c;这不但会阻碍当前交易的顺利完成&#xff0c;还…

ASP.NET MVC-razor编写-2-svg中使用js+添加事件监听

环境&#xff1a;win10 效果 初始状态&#xff1a; 鼠标移入某个text&#xff08;比如KS primer&#xff09;时&#xff0c;text和连接的线条与箭头都变色&#xff1a; 鼠标移出时回复正常。 如果是移入另一种红色的text&#xff08;比如Cell Sceening Tag&#xff09;&…

Using a text embedding model locally with semantic kernel

题意&#xff1a;在本地使用带有语义核&#xff08;Semantic Kernel&#xff09;的文本嵌入模型 问题背景&#xff1a; Ive been reading Stephen Toubs blog post about building a simple console-based .NET chat application from the ground up with semantic-kernel. Im…

HexPlane: A Fast Representation for Dynamic Scenes一种动态场景的快速表示方法

Abstract 动态三维场景的建模与再现是三维视觉领域的一个具有挑战性的课题。先前的方法基于 NERF 并依赖于隐式表示这是缓慢的&#xff0c;因为它需要许多 MLP 评估&#xff0c;限制真实世界的应用程序。我们展示了动态三维场景可以明确地表示为六个平面的学习功能&#xff0c…

【重磅】万能模型-直接能换迪丽热巴的模型

万能模型&#xff0c;顾名思义&#xff0c;不用重新训练src&#xff0c;直接可以用的模型&#xff0c;适应大部分原视频脸 模型用法和正常模型一样&#xff0c;但可以跳过训练阶段&#xff01;直接到合成阶段使用该模型 本模型没有做Xseg&#xff0c;对遮挡过多的画面不会自动适…

信创-系统架构师认证

随着国家对信息技术自主创新的战略重视程度不断提升&#xff0c;信创产业迎来前所未有的发展机遇。未来几年内&#xff0c;信创产业将呈现市场规模扩大、技术创新加速、产业链完善和国产化替代加速的趋势。信创人才培养对于推动产业发展具有重要意义。应加强高校教育、建立人才…

2.4章节python中字符串类型

在Python中&#xff0c;字符串&#xff08;String&#xff09;是一种基本的数据类型&#xff0c;用于表示文本信息。字符串可以包含字母、数字、标点符号或任何Unicode字符。Python中的字符串是不可变的&#xff0c;这意味着一旦创建了字符串&#xff0c;就不能更改字符串中的字…

2007年下半年软件设计师【上午题】试题及答案

文章目录 2007年下半年软件设计师上午题--试题2007年下半年软件设计师上午题--答案2007年下半年软件设计师上午题–试题

YOLOV++ 详解 | 网络结构、代码解析、YOLOV 论文阅读、初识 VID

前言 代码地址&#xff1a;https://github.com/YuHengsss/YOLOV 本文网络结构按 YOLOV SwinTiny 绘制&#xff0c;不同的模型主要差异在于 Backbone&#xff0c;VID 相关的部分基本相同。 Predict Input 代码基于 vid_demo。首先会读取视频中的所有帧&#xff08;只能用短视频…

亚马逊跟卖ERP的自动调价功能,能够简易地批量设置价格规则。

跟卖的智能调价 跟卖智能调价简单说是可以上调&#xff0c;下调就是怎么说&#xff1f;上调就是它根靠根据市场最低的价格情况进行去上调。 然后添加指定条件&#xff0c;到工具栏找到指定条件&#xff0c;点击添加指定条件。 然后选择店铺&#xff0c;比如选择店铺&#xf…

p-tuning算法介绍及其pytorch代码实现

P-tuning介绍 代码实现 import torch from transformers import BertTokenizer, BertForSequenceClassification import matplotlib.pyplot as plt import matplotlib.ticker as tickertokenizer BertTokenizer.from_pretrained(bert-base-chinese) model BertForSequenceCl…

Games101学习笔记 Lecture 15: Ray Tracing 3 (Light Transport Global Illumination)

Lecture 15: Ray Tracing 3 (Light Transport & Global Illumination 一、BRDF 双向反射分布函数定义 二、反射方程 Reflection Equation三、渲染方程1.重写反射方程2.当其他的点反射的radiance作为入射 一、BRDF 双向反射分布函数 定义 计算不同的反射方向上会分布多少能…

竹云实力入选《现代企业零信任网络建设应用指南报告》代表性厂商

2024年7月3日&#xff0c;国内网络安全媒体安全牛正式发布《现代企业零信任网络建设应用指南报告(2024版)》。竹云凭借在零信任领域创新性的产品方案和优异的市场表现&#xff0c;实力入选代表性厂商。 伴随着云计算、AI、大数据等技术的发展&#xff0c;远程办公、业务协同、…

遗漏知识点

什么是RAII&#xff1f; RAII是Resource Acquisition Is Initialization&#xff08;wiki上面翻译成 “资源获取就是初始化”&#xff09;的简称&#xff0c;是C语言的一种管理资源、避免泄漏的惯用法。利用的就是C构造的对象最终会被销毁的原则。RAII的做法是使用一个对象&am…

西门子PLC1200--与电脑S7通讯

硬件构成 PLC为西门子1211DCDCDC 电脑上位机用PYTHON编写 二者通讯用网线&#xff0c;通讯协议用S7 PLC上的数据 PLC上的数据是2个uint&#xff0c;在DB1&#xff0c;地址偏移分别是0和2 需要注意的是DB块要关闭优化的块访问&#xff0c;否则是没有偏移地址的 PLC中的数据内…

VCS+Vivado联合仿真BUG

场景&#xff1a; 在vcsvivado联合仿真过程中&#xff0c;对vivado导出的shell脚本修改&#xff0c;修改某些source文件路径&#xff0c;vcs编译时会报Permission Denied。 问题描述 对shell脚本修改如下&#xff1a; 修改仅为注释掉某一行&#xff0c;下面变为source文件新…

【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【20】认证服务04—SSO单点登录

持续学习&持续更新中… 守破离 【雷丰阳-谷粒商城 】【分布式高级篇-微服务架构篇】【20】认证服务04—SSO单点登录 xxl-sso多系统-单点登录单点登录流程原理图单点登录流程简单实现参考 xxl-sso https://gitee.com/xuxueli0323/xxl-sso xxl-sso是开源的一个单点登录框架 …