Vue+ECharts的小示例

Vue+ECharts做数据可视化

1. Vue

Vue 是一套用于构建用户界面的渐进式框架。与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用。Vue 的核心库只关注视图层,不仅易于上手,还便于与第三方库或既有项目整合。另一方面,当与现代化的工具链以及各种支持类库结合使用时,Vue 也完全能够为复杂的单页应用提供驱动。
我使用的Vue版本是3.11.0。

2.ECharts

https://echarts.apache.org/examples/zh/index.html
ECharts的所有示例。

3.Vue+ECharts的示例(以一个例子做示例,其他类似)

(1) 开发工具

使用Visual Studio Code,开源工具,免费。
项目做完后,可以build一下,加入其他项目中,不会的可以百度。

(2) 加入ECharts到Vue项目中

在这里插入图片描述
引入全局echarts对象
在这里插入图片描述
在这里插入图片描述
加入路由占位符
在这里插入图片描述

(2) 目录结构

在这里插入图片描述

(3) 创建AreaPage.vue和Area.vue

(4) 创建访问路径

在这里插入图片描述

(5) AreaPage.vue

<!--针对/areapage这条路劲而显示出来
在这个组件中通过子组件注册的方式,要显示Area.vue这个组件-->
<template><div class="com-page"><Area></Area></div> 
</template><script>import Area from '../components/Area.vue'export default{name: 'AreaPage',components:{Area}}
</script><style></style>

(6) Area.vue

<!--租房数据的地区数据分析的横向柱状图 -->
<template><div class="com-container"><div class="com-chart" ref="area_ref"></div></div>
</template><script>
import { mapState } from "vuex";
export default {data() {return {chartInstance: null,allData: null, //服务器返回的数据currentPage: 1, //当前显示的页数totalPage: 0, //一共有多少页timerId: null, //定时器的标识};},mounted() {this.initChart();this.getData();window.addEventListener("resize", this.screenAdapter);//在页面加载完成时,主动进行屏幕的适配this.screenAdapter();},destroyed() {clearInterval(this.timerId);//在组件销毁的时候,需要将监听器取消window.removeEventListener("resize", this.screenAdapter);},methods: {//初始化echartInstance对象initChart() {this.chartInstance = this.$echarts.init(this.$refs.area_ref, this.theme);//对图表初始化配置的控制const initOption = {//图表的标题title: {text: "▎房屋地区数据统计",left: 20,top: 20,},//坐标轴的位置grid: {top: "20%",left: "3%",right: "6%",bottom: "3%",containLabel: true, //距离是包含坐标轴上的文字},xAxis: {type: "value",},yAxis: {type: "category",},tooltip: {trigger: "axis",axisPointer: {type: "line",z: 0,lineStyle: {color: "#2D3443",},},},series: [{type: "bar",label: {show: true,position: "right",textStyle: {color: "white",},},itemStyle: {//指明颜色渐变的方向//指明不同百分比之下颜色的值color: new this.$echarts.graphic.LinearGradient(0, 0, 1, 0, [//百分之0状态之下的颜色值{offset: 0,color: "#5052EE",},//百分之100状态之下的颜色值{offset: 1,color: "#AB6EE5",},]),},},],};this.chartInstance.setOption(initOption);//对图表对象进行鼠标事件的监听this.chartInstance.on("mouseover", () => {clearInterval(this.timerId);});this.chartInstance.on("mouseout", () => {this.startInterval();});},//获取服务器的数据async getData() {//http://localhost:8888/data/getAnaly?cate=areaconst { data: ret} = await this.$http.get("getAnaly?cate=area");this.allData = ret.data;console.log(this.allData);console.log(typeof this.allData);// 对数组进行排序this.allData.sort((a, b) => {return a.count - b.count;});//每5个元素显示一页this.totalPage =this.allData.length % 5 === 0? this.allData.length / 5: this.allData.length / 5 + 1;this.updateChart();//启动定时器this.startInterval();},//更新图表updateChart() {const start = (this.currentPage - 1) * 5; // 0const end = this.currentPage * 5; // 5const showData = this.allData.slice(start, end);const areaNames = showData.map((item) => {return item.cate;});console.log(areaNames);const areaValues = showData.map((item) => {return item.count;});console.log(areaValues);const dataOption = {yAxis: {data: areaNames,},series: [{data: areaValues,},],};this.chartInstance.setOption(dataOption);},startInterval() {if (this.timerId) {clearInterval(this.timerId);}this.timerId = setInterval(() => {this.currentPage++;if (this.currentPage > this.totalPage) {this.currentPage = 1;}this.updateChart();}, 3000);},// 当浏览器的大小发生变化的时候,会调用的方法,来完成屏幕的适配screenAdapter() {//console.log(this.$refs.area_ref.offsetWidth)const titleFontSize = (this.$refs.area_ref.offsetWidth / 100) * 3.6;console.log(titleFontSize);// 浏览器分辨率大小相关的配置项const adapterOption = {title: {textStyle: {fontSize: titleFontSize,},},tooltip: {axisPointer: {lineStyle: {width: titleFontSize,},},},series: [{barWidth: titleFontSize,itemStyle: {barBorderRadius: [0, titleFontSize / 2, titleFontSize / 2, 0],},},],};this.chartInstance.setOption(adapterOption);// 手动调用图表的 resize 才能产生效果this.chartInstance.resize();},},computed: {...mapState(["theme"]),},watch: {theme() {console.log("主题切换了");this.chartInstance.dispose(); //销毁当前图表this.initChart(); //重新以最新的主题名称初始化图表对象this.screenAdapter(); //完成屏幕的适配this.updateChart(); //更新图表的展示},},
};
</script><style>
</style>

(7) 实现结果

在这里插入图片描述

(8) 注意事项及说明

自己创建一个vue.config.js,做一些配置
在这里插入图片描述
这是其中一个示例的代码,没有主题说明的话,可以自己删除。
如果想参考整个代码,我就贴一下前端项目的地址。
前端项目地址
有git的话,自己git也行
https://github.com/Uluoyu/58-Vue-ECharts.git
后端代码根据自己的需求自己提供,前端只需要向后端发请求获取所需数据。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

将MongoDB集成到您的Spring项目

本文展示了如何通过注释配置将MongoDB集成到您的spring项目中。 我们将从Gradle配置开始。 group com.gkatzioura.spring version 1.0-SNAPSHOTbuildscript {repositories {mavenCentral()}dependencies {classpath("org.springframework.boot:spring-boot-gradle-plugi…

汇编学习笔记(3)-80x86指令集

前言 &#xff08;1&#xff09;指令的一般格式 [标号:] 助记符 [操作数1 &#xff0c; [操作数2]] [; 注释] 一行一条指令 助记符就是指令的名称&#xff0c;每条指定必定有个助记符。 助记符前面的标号是给汇编编译器看的&#xff0c;由我们自己取名&#xff0c;一般取表示本…

osg 三维gis开发_三维GIS平台的可视化应用 (下)

上一篇主要对三维GIS的基础数据和三维模型进行了一点说明&#xff0c;本篇将接着聊剩下的部分&#xff0c;主要是三维GIS平台能够支持什么样的场景展示&#xff0c;并来对平台的应用进行一些介绍。没看过上篇的朋友可以先了解一下再看本篇&#xff1a;MonoLog&#xff1a;三维G…

Servlet拦截器

Servlet拦截器1.LoginFilter package main.java.filter;import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import java.io.IOException;public class LoginFi…

前端HTML介绍

一、HTML简介HTML定义&#xff1a;  超级文本标记语言是标准通用标记语言下的一个应用&#xff0c;也是一种规范&#xff0c;一种标准&#xff0c;它通过标记符号来标记要显示的网页中的各个部分。网页文件本身是一种文本文件&#xff0c;通过在文本文件中添加标记符&#xff…

huffman编码的程序流程图_Huffman编码实现压缩解压缩

这是我们的课程中布置的作业。找一些资料将作业完毕&#xff0c;顺便将其写到博客&#xff0c;以后看起来也方便。原理介绍什么是Huffman压缩Huffman( 哈夫曼 ) 算法在上世纪五十年代初提出来了&#xff0c;它是一种无损压缩方法&#xff0c;在压缩过程中不会丢失信息熵。并且能…

solr创建索引_Solr:创建拼写检查器

solr创建索引在上一篇文章中&#xff0c;我谈到了Solr Spellchecker的工作原理&#xff0c;然后向您展示了其性能的一些测试结果。 现在&#xff0c;我们将看到另一种拼写检查方法。 与其他方法一样&#xff0c;此方法使用两步过程。 相当快速的“候选单词”选择&#xff0c;然…

5000元性价比高的笔记本_2018性价比笔记本电脑品牌推荐 5000左右笔记本性价比推荐...

对于年年都出新款的电子产品&#xff0c;购买者们每年都经历一回挑花眼的时刻&#xff0c;那2018有什么笔记本比较好呢?宏碁暗影骑士3参考价&#xff1a;5099元内存容量&#xff1a;8G  显存容量&#xff1a;2G  硬盘容量&#xff1a;128G1T显卡型号&#xff1a;GTX1050(高…

Hibernate模糊查询

Hibernate模糊查询1.不使用hql DetachedCriteria criteria DetachedCriteria.forClass(User.class);if (StringUtils.isNotEmpty(yh)) {criteria.add(Restrictions.or(Restrictions.eq("yhid", yh),Restrictions.like("yhxm", yh, MatchMode.ANYWHERE)))…

带有Javaslang的Java 8中的功能数据结构

Java 8的lambda&#xff08;λ&#xff09;使我们能够创建出色的API。 它们令人难以置信地提高了语言的表达能力。 Javaslang利用lambda来基于功能模式创建各种新功能。 其中之一是功能性集合库&#xff0c;旨在替代Java的标准集合。 &#xff08;这只是鸟瞰图&#xff0c;您…

丰田pcs可以关闭吗_丰田车必备的配置有哪些是在亚洲龙上体现了?

亚洲龙基于丰田TNGA架构下的GA-K平台打造而来&#xff0c;与雷克萨斯ES一致&#xff0c;先期推出搭载2.5L自然吸气发动机以及2.5L混合系统的车型。作为一汽丰田的全新旗舰轿车&#xff0c;亚洲龙主销车型配备丰田TSS规避碰撞辅助套装&#xff0c;英文全拼为 “Toyota Safety Se…

[NOIP2014]飞扬的小鸟

思路{ 对于每一列&#xff0c;小鸟或下落&#xff0c;或上升。那我们很容易想到对应的背包问题&#xff01; 按照完全背包的思想更新上升部分&#xff0c;01背包的方法更新下降部分。 撞到柱子了(aluba。。。。。。aluba.。。。。。)不慌&#xff0c;只需把它设为不可打即可&am…

2020 dns排名_2020年新版全球/全国各地ISP的DNS服务器地址表

【第一】国内外知名的公共DNS服务器(排列不分先后)&#xff1a;腾讯公共DNS(119.29.29.29、182.254.116.116)阿里公共DNS(223.5.5.5、223.6.6.6)百度公共DNS(180.76.76.76)360安全DNS(123.125.81.6)Google(8.8.8.8、8.8.4.4)114DNS(114.114.114.114、114.114.115.115)OpenDNS(2…

Spring MVC 登录拦截器

Spring MVC 登录拦截器1.编写拦截器 package interceptor;import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRespons…

bzoj1556 (DP)

bzoj 1556 点这里打开题目 题目是求 a^2 求和&#xff1b; 原问题可以转化为&#xff1a;两个人在玩这个东西&#xff0c;问这两个人弄出来的序列相同的有多少种情况&#xff0c;操作方式不同即为一种不同的情况。 就这个问题&#xff0c;参考大佬的DP思想。 DP[t][i][j] 分别…

帆软参数设置_数据分析软件之FineReport教程:[5]参数界面JS(全)

在用报表工具设计报表时&#xff0c;使用参数控件时&#xff0c;有时我们希望部分参数控件在没满足条件时不显示&#xff0c;满足条件后再显示&#xff0c;接下来我就来教教大家怎么做&#xff01;表格软件如何根据条件控制参数控件是否显示一&#xff1a;问题描述在使用参数控…

wurfl_比较OpenDDR与WURFL

wurfl量身定制的Web内容通常受益于定制&#xff0c;以考虑多种因素&#xff0c;例如屏幕大小&#xff0c;标记语言支持和图像格式支持。 此类信息存储在“设备描述存储库”&#xff08;DDR&#xff09;中。 WURFL和OpenDDR项目都提供了访问DDR的API&#xff0c;以简化并促进适应…

ssm 静态资源处理器

ssm 静态资源处理器<!-- 静态资源处理--><mvc:default-servlet-handler/>

极简单的方式序列化sqlalchemy结果集为JSON

继承 json.JSONEncoder 实现一个针对sqlalchemy返回类型的处理方式。 sqlalchemy的返回类型有大都有两种&#xff0c;一种是Model对象&#xff0c;一种是Query集合&#xff08;只查询部分字段&#xff09;。 针对这两种返回结果&#xff0c;都是来自同一中类型 sqlalchemy.orm…

easymock 图片_数据模拟神器 easy-mock 正式开源

开源公告由大搜车无线团队出品的 easy-mock 在线数据模拟服务上线至今已经有几个月时间了&#xff0c;近期网站刚更新了焕然一新的 2.0 版本&#xff0c;与此同时&#xff0c;我们还带来一个更重磅的消息&#xff1a;今天正式将整个服务的代码在 github 开源(github.com/easy-m…