前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >vue简单数据可视化---结合echarts实现柱状图

vue简单数据可视化---结合echarts实现柱状图

作者头像
代码哈士奇
发布2021-01-26 15:50:17
2.5K0
发布2021-01-26 15:50:17
举报
文章被收录于专栏:dmhsq_csdn_blogdmhsq_csdn_blog

vue简单数据可视化---结合echarts实现柱状图

  大家好,我是代码哈士奇,是一名软件学院网络工程的学生,因为我是“狗”,狗走千里吃肉。想把大学期间学的东西和大家分享,和大家一起进步。但由于水平有限,博客中难免会有一些错误出现,有纰漏之处恳请各位大佬不吝赐教!暂时只在csdn这一个平台进行更新,博客主页:https://blog.csdn.net/qq_42027681未经本人允许,禁止转载

首先搭建vue项目

不会或者忘记的小伙伴移步这里 Vue项目搭建

本次主要讲将数据展示成柱状图,不封装axios不封装echarts,直接引用,大佬勿喷

下载axios和echarts包

npm install axios --save

npm install echarts --save

下载完成即可

新建页面

About 和Home文件为创建项目自带不用管

配置路由

代码语言:javascript
复制
import Vue from "vue";
import VueRouter from "vue-router";
import Home from "../views/Home.vue";
import Echartest from "../views/Echartest.vue"

Vue.use(VueRouter);

const routes = [
  {
    path: "/",
    name: "Home",
    component: Home
  },
  {
    path: "/about",
    name: "About",
    // route level code-splitting
    // this generates a separate chunk (about.[hash].js) for this route
    // which is lazy-loaded when the route is visited.
    component: () =>
      import(/* webpackChunkName: "about" */ "../views/About.vue")
  },
  {
    path: "/echart",
    name: "Echarts",
    component: Echartest
  }
];

const router = new VueRouter({
  routes
});

export default router;

配置页面

返回创建的页面文件

通过官方给出的手册 手册入口

可以看出首先要创建一个div当然canvas也可以 这里讲div展示

代码语言:javascript
复制
<template>
	<div>
		<div ref="echartestOne" style="width: 500px;height: 400px;"></div>
	</div>
</template>

在echarts官方实例中找到 柱状图的(可以根据喜好选择)

本次使用基础柱状图 实例入口

复制实例给出的代码

js中 myChart声明一个echarts的输出对象

myCharts.setOption中将实例打印到输出对象

option为实例

代码语言:javascript
复制
<script>
	import echarts from 'echarts'
	export default{
		mounted() {
			this.setTest();
		},
		methods:{
			setTest(){
				let myChart = echarts.init(this.$refs.echartestOne);
				let option = {
				    xAxis: {
				        type: 'category',
				        data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
				    },
				    yAxis: {
				        type: 'value'
				    },
				    series: [{
				        data: [120, 200, 150, 80, 70, 110, 130],
				        type: 'bar',
				        showBackground: true,
				        backgroundStyle: {
				            color: 'rgba(220, 220, 220, 0.8)'
				        }
				    }]
				};
				myChart.setOption(option);
			}
		}
	}
</script>

做好这些我们就引入了一个静态的图

接下来我们改造下它

代码语言:javascript
复制
<script>
	import echarts from 'echarts'
	export default{
		mounted() {
			this.setTest();
		},
		methods:{
			setTest(){
				let xAx:['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
				let yAy:[120, 200, 150, 80, 70, 110, 130];
				let myChart = echarts.init(this.$refs.echartestOne);
				let option = {
				    xAxis: {
				        type: 'category',
				        data: this.xAx
				    },
				    yAxis: {
				        type: 'value'
				    },
				    series: [{
				        data: this.yAy,
				        type: 'bar',
				        showBackground: true,
				        backgroundStyle: {
				            color: 'rgba(220, 220, 220, 0.8)'
				        }
				    }]
				};
				myChart.setOption(option);
			}
		}
	}
</script>

注意我们声明了两个变量 xAx,yAy对应之前的数据

效果一样

再次改造

网络请求

加入axios发送请求

我用spring boot写了一个小后台 读取数据

本地api接口为http://localhost:8084/test/getDatas

我们来调用

当然没有后台的可以用json文件代替

方法如下

新建一个json文件 在文件中写入

代码语言:javascript
复制
{
	"status": 200,
	"msg": "哈喽帅哥",
	"data": [{
		"dataId": 0,
		"dataX": "one",
		"dataY": 100
	}, {
		"dataId": 1,
		"dataX": "two",
		"dataY": 200
	}, {
		"dataId": 2,
		"dataX": "three",
		"dataY": 150
	}, {
		"dataId": 3,
		"dataX": "four",
		"dataY": 300
	}]
}

在浏览器中如下

axios.get()

在axios的源码文件里面

我们可以向请求里面填入这些参数 不用全填 根据需求即可

我们请求本地文件

代码语言:javascript
复制
axios.get('testJson/test.json');

浏览器 检查元素 网络

可以看到

改造setTest函数

代码语言:javascript
复制
setTest(xAx,yAy){
				let myChart = echarts.init(this.$refs.echartestOne);
				let option = {
				    xAxis: {
				        type: 'category',
				        data: xAx
				    },
				    yAxis: {
				        type: 'value'
				    },
				    series: [{
				        data: yAy,
				        type: 'bar',
				        showBackground: true,
				        backgroundStyle: {
				            color: 'rgba(220, 220, 220, 0.8)'
				        }
				    }]
				};
				myChart.setOption(option);
			}

xAx,yAy为传参形式传入

接下来提取我们需要的数据

代码语言:javascript
复制
getDataAndsetTest(){
				let xAx=[];
				let yAy=[];
				axios.get('testJson/test.json').then(res=>{
					let resp = res.data.data;
					resp.forEach((item)=>{
						xAx.push(item.dataX)
						yAy.push(item.dataY);
					})
				});
			}

在控制台我们已经可以看到有请求 当然我们打印xAx,yAy也可以看出来有数据

再次改造

代码语言:javascript
复制
getDataAndsetTest(){
				let xAx=[];
				let yAy=[];
				axios.get('testJson/test.json').then(res=>{
					let resp = res.data.data;
					resp.forEach((item)=>{
						xAx.push(item.dataX)
						yAy.push(item.dataY);
					})
					this.setTest(xAx,yAy)
				});
			},

数据加载完成我们就生产柱状图

完整代码

代码语言:javascript
复制
<template>
	<div>
		<div ref="echartestOne" style="width: 500px;height: 400px;"></div>
	</div>
</template>

<script>
	import echarts from 'echarts'
	import axios from 'axios'
	export default{
		mounted() {
			this.getDataAndsetTest();
		},
		methods:{
			getDataAndsetTest(){
				let xAx=[];
				let yAy=[];
				axios.get('testJson/test.json').then(res=>{
					let resp = res.data.data;
					resp.forEach((item)=>{
						xAx.push(item.dataX)
						yAy.push(item.dataY);
					})
					this.setTest(xAx,yAy)
				});
			},
			setTest(xAx,yAy){
				let myChart = echarts.init(this.$refs.echartestOne);
				let option = {
				    xAxis: {
				        type: 'category',
				        data: xAx
				    },
				    yAxis: {
				        type: 'value'
				    },
				    series: [{
				        data: yAy,
				        type: 'bar',
				        showBackground: true,
				        backgroundStyle: {
				            color: 'rgba(220, 220, 220, 0.8)'
				        }
				    }]
				};
				myChart.setOption(option);
			}
		}
	}
</script>

<style>
</style>

这样你就有了一个简单的从数据库读取数据且做成柱状图的页面了

可以加个按钮刷新数据

此处为请求我的后端接口获取数据

代码语言:javascript
复制
<button @click="getDataAndsetTest">刷新</button>

定时刷新

也可以加个定时器

我们定时每秒执行一次

代码语言:javascript
复制
mounted() {
			 this.timer = setInterval(this.getDataAndsetTest, 1000);
		},
		beforeDestroy() {
		   clearInterval(this.timer);
		 },

当然记得销毁定时器

效果如下

本文讲到这里 有兴趣的小伙伴可以尝试下哦 后面我们会讲别的图形的使用

后续会推出

前端:js入门 vue入门 vue开发小程序 等

后端: java入门 springboot入门等

服务器:mysql入门 服务器简单指令 云服务器运行项目

python:推荐不温卜火 一定要看哦

一些插件的使用等

大学之道亦在自身,努力学习,热血青春

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-11-13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • vue简单数据可视化---结合echarts实现柱状图
  • 下载axios和echarts包
  • 新建页面
  • 配置页面
  • 网络请求
  • 定时刷新
相关产品与服务
云开发 CloudBase
云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档