当前位置: 首页 > news >正文

【vue实战项目】通用管理系统:图表功能

目录

前言

1.概述

2.数据概览页

2.1.柱状图

2.2.折线图

2.3.地图


前言

本文是博主前端Vue实战系列中的一篇文章,本系列将会带大家一起从0开始一步步完整的做完一个小项目,让你找到Vue实战的技巧和感觉。

专栏地址:

https://blog.csdn.net/joker_zjn/category_12469788.html?spm=1001.2014.3001.5482

前文中我们依次安装好了插件、依赖,搭建好了环境,搭好了项目的架子,实现了登录页、首页、菜单栏、导航栏、学生列表模块这些功能。接下来我们要做的是图表功能,本文主要是简单做几个图表,让大家感受一下要做vue的图表开发该怎么做。

1.概述

ECharts(Echarts.js)是百度开发的一款强大的、开源的JavaScript图表库,用于在网页上生成各种高质量的、可交互的数据可视化图表。ECharts支持多种图表类型,包括但不限于折线图、柱状图、饼图、散点图、雷达图、热力图、地图、仪表盘、漏斗图、关系图等,几乎涵盖了数据可视化领域的所有需求。前端现在做图表基本上都是用的echart。

echart其实就是去配置不同类型图表,就是个填参数的游戏,可以先看一段代码感受一下:

// 引入ECharts后,通过DOM元素获取图表容器
var chartDom = document.getElementById('main');// 初始化ECharts实例
var myChart = echarts.init(chartDom);// 定义图表配置项
var option = {// 图表标题配置title: {text: 'ECharts 示例' // 图表标题文本},// 提示框组件,用于显示鼠标悬浮时的信息tooltip: {},// 图例组件,用于图例的展示和切换legend: {data:['销量'] // 图例项名称列表},// X轴配置,数据类别轴xAxis: {data: ["衬衫","羊毛衫","雪纺衫","裤子","高跟鞋","袜子"] // 每个类别的名称},// Y轴配置,数值轴yAxis: {},// 系列列表,定义每一系列的数据和样式series: [{// 系列名称,会在图例中显示name: '销量',// 图表类型,这里是柱状图type: 'bar',// 数据数组,与xAxis.data一一对应data: [5, 20, 36, 10, 10, 20]}]
};// 使用刚指定的配置项和数据显示图表
myChart.setOption(option);
  • echarts.init(chartDom):这行代码是创建ECharts实例的关键,chartDom是之前获取到的DOM元素,echarts.init方法会在这个元素上初始化一个图表实例。
  • option对象:这是ECharts的核心配置项,包含了图表的所有配置信息,如标题、图例、X轴、Y轴、系列数据等。每个部分都是一系列配置属性的集合,用于控制图表的外观和行为
  • title:定义图表标题,text属性指定了标题文本。
  • tooltip:虽然在这里是空对象,但默认开启了提示框功能,当鼠标悬停在图表元素上时会显示数据详情。
  • legend:定义图例,data属性是一个数组,包含了图例项的名称。
  • xAxis:X轴配置,data属性定义了X轴每个类别的标签。
  • yAxis:Y轴配置,这里没有特别设置,使用默认配置。
  • series:图表系列数据,数组中的每个对象代表一个系列。例子中只有一个系列,类型为bar(柱状图),name定义系列名称,data是该系列的具体数据。
  • myChart.setOption(option):最后,通过调用setOption方法将配置应用到图表实例上,完成图表的渲染。ECharts会根据option中的配置,计算布局、渲染图形,并处理交互逻辑。

所有图表和使用方式、配置方式官网上都有详细介绍,用到的时候直接去查就是:
Apache ECharts

接下来继续写我们的项目,使用echarts来实现图表,先安装依赖:

npm i -D echarts@4

在main.js里面将echart挂载进来:

import echarts from 'echarts' 
Vue.prototype.$echarts=echarts

2.数据概览页

2.1.柱状图

然后用原来的数据概览页来开发图表:

组件:

主要就是两个卡片容器,在其中一个尝试画一个柱状图。

<template><div class="data-view"><el-card><div id="main1"></div></el-card><el-card><div id="main2"></div></el-card></div>
</template>
​
<script>
export default({data(){return{
​}},mounted(){let myChart=this.$echarts.init(document.getElementById('main1'));myChart.setOption({title:{text:'大佬进阶班'},tootip:{},xAxis:{data:['一班','二班','三班']},yAxis:{},series:[{name: '人数',type: 'bar',data: [45,42,46]}]})}
})
</script>
<style lang="less">.data-view{width: 100%;display: flex;justify-content: space-between;.el-card{width: 50%;#main1,#main2{height: 500px;}}}
</style>

效果图:

2.2.折线图

<template><div class="data-view"><el-card><div id="main1"></div></el-card><el-card><div id="main2"></div></el-card></div>
</template><script>
export default({data(){return{}},mounted(){//    let myChart=this.$echarts.init(document.getElementById('main1'));//    myChart.setOption({//     title:{//         text:'大佬进阶班'//     },//     tootip:{},//     xAxis:{//         data:['一班','二班','三班']//     },//     yAxis:{},//     series:[{//         name: '人数',//         type: 'bar',//         data: [45,42,46]//     }]//    })this.draw(['技术总监', '产品经理', '后端开发', '前端开发', '运维/测试'],['周一', '周二', '周三', '周四', '周五', '周六', '周日'],[{ name: '技术总监',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },{ name: '产品经理',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },{ name: '后端开发',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },{ name: '前端开发',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] },{ name: '运维/测试',  type: 'line',data: [80, 83, 84, 40, 44, 11, 12] }]);},methods:{draw(legend,xAxis,series){let myChart1=this.$echarts.init(document.getElementById('main2'))let option={title:{text:'会话量'},tooltip: {trigger:'axis'},legend: {data:legend},xAxis: {type:'category',data:xAxis},yAxis:{type: 'value'},series:series}myChart1.setOption(option)}}
})
</script>
<style lang="less">
.data-view {width: 100%;display: flex;justify-content: space-between;.el-card {width: 50%;#main1,#main2 {height: 500px;}}
}
</style>

2.3.地图

基于MapData.vue来开发地图。

地图需要json格式的数据,去这个网站自行下载:

免费下载实时更新的geoJson数据、行政区划边界数据、区划边界坐标集合__HashTang

放到assets路径下,然后看看能不能用:

<template><div class="map-view"><div id="main"></div></div>
</template>
<script>
import geoJson from '@/assets/map.Json'
export default {mounted(){console.log(geoJson)}
}
</script>
<style lang="less">.map-view{width:100%;#main{width: 100%;height: 600px;}}
</style>

绘制地图:

<template><div class="map-view"><div id="main"></div></div>
</template>
<script>
import geoJson from '@/assets/map.Json'
export default {mounted(){console.log(geoJson);let myChart=this.$echarts.init(document.getElementById('main'))this.$echarts.registerMap('china',geoJson)let option={geo:{map: 'china',aspectScale: 0.75,//scale地图长宽比zoom: 1.1,regions: [{name: '南海诸岛'}]},series: [{//配置地图图标相关配置type: 'map',zoom: 1.1,map: 'china'}]}myChart.setOption(option)}
}
</script>
<style lang="less">.map-view {width:100%;#main {width: 100%;height: 600px;}}
</style>

效果:

http://www.lryc.cn/news/367639.html

相关文章:

  • 第99天:权限提升-数据库提权口令获取MYSQLMSSQLOracleMSF
  • Java 环境配置 -- Java 语言的安装、配置、编译与运行
  • 升级最新版openssh-9.7p1及openssl-1.1.1h详细步骤及常见问题总结
  • 学习使用 Frida 过程中出现的问题
  • Java实现简单词法、语法分析器
  • Python实现半双工的实时通信SSE(Server-Sent Events)
  • python中的解包操作(*和**)
  • Lua 时间工具类
  • Qt——Qt网络编程之TCP通信客户端的实现(使用QTcpSocket实现一个TCP客户端例程)
  • Qt信号槽与函数直接调用性能对比
  • Python中的异常处理:try-except-finally详解与自定义异常类
  • vscode软件上安装 Fitten Code插件及使用
  • 人工智能小作业
  • 程序员搞副业一些会用到的工具
  • k8s更改master节点IP
  • c++【入门】已知一个圆的半径,求解该圆的面积和周长?
  • c#通过sqlsugar查询信息并日期排序
  • 使用 Qwen-Agent 将 8k 上下文记忆扩展到百万量级
  • Vyper重入漏洞解析
  • 53.ReentrantLock原理
  • “论边缘计算及应用”必过范文,突击2024软考高项论文
  • 浅谈安全用电管理系统对重要用户的安全管理
  • Docker的资源限制
  • MongoDB $rename 给字段一次重新命名的机会
  • OnlyOwner在Solidity中是一个修饰符,TypeError:
  • 数据Ant-Design-Vue动态表头并填充
  • 验证码案例
  • python身份证ocr接口功能免费体验、身份证实名认证接口
  • 屏幕空间反射技术在AI绘画中的作用
  • JDK下载安装Java SDK