就在上周全国各地区GDP总量上了热搜,一时兴起就想写个大数据面板展示
既然决定要写,那么就要考虑到图表和图标的使用,这里我是用了我最熟悉的两大框架ECharts和element-ui

一、我的构思步骤

1. 确定主题色彩

首先我们通过ECharts主题定制确定我们的总体图表颜色

也可以自行定制,替换掉我里面的macarons.json文件就行了

import macarons from './macarons.json' // 引入默认主题export default {data () {return {chart: null}},mounted () {this.$echarts.registerTheme('macarons', macarons); // 覆盖默认主题this.initChart();},methods: {initChart () {// 初始化echartthis.chart = this.$echarts.init(this.$el, 'macarons')this.chart.setOption(this.options, true)}}}

2. 选择合适的图表

这里我使用了折线图、柱状图、饼图、地图、滚动列表,重点说一下地图和滚动列表
地图的话我们需要找该地区的json或js地图数据文件引入或用其他地图插件(如百度地图),但我个人感觉这种轮廓地图要好看点。

我文件里下载了一个中国省区地图,和地级市地图,需要可以自取,我用到的是地级市地图

import chinaCityJson from './china-cities.json'export default {methods: {initChart() {//...关键语句this.$echarts.registerMap("china", chinaCityJson);}}}

滚动列表我使用的是vue-seamless-scroll,因为我这里表格用了element-ui的一个表格,为了控制表头不滚动,我其实是写了两个表格,一个隐藏主体内容,一个隐藏表头,不想使用这个插件的可以参考我之前的文章Vue实现简单列表无限循环滚动(鼠标悬停)自己修改一个适合自己的滚动列表
vue-seamless-scroll组件参考代码:

import vueSeamlessScroll from 'vue-seamless-scroll'
export default {data() {},components: {    //组件vueSeamlessScroll},computed: {optionSingleHeight() {return {step: 0.2, // 数值越大速度滚动越快limitMoveNum: 2, // 开始无缝滚动的数据量 this.List.lengthhoverStop: true, // 是否开启鼠标悬停stopdirection: 1, // 0向下 1向上 2向左 3向右openWatch: true, // 开启数据实时监控刷新domsingleHeight: 0, // 单步运动停止的高度(默认值0是无缝不停止的滚动) direction => 0/1singleWidth: 0, // 单步运动停止的宽度(默认值0是无缝不停止的滚动) direction => 2/3waitTime: 1000 // 单步运动停止的时间(默认值1000ms)}}},
}

3. 样式美化

我们可以插入一些图片和做一些动态边框、透明背景来实现美化界面
这里我只用了两张背景图做美化,那就是大屏的背景图和一线城市的背景图
这里考虑到打包到服务器会找不到背景图一些原因,我们把样式写到data里面

export default {data() {return {note: {backgroundImage: "url(" + require("../assets/img/bg.jpg") + ")",backgroundSize: "100% 100%",},box: {margin:"10px 10px 10px 10px",height: "2rem",border: "0.25rem solid transparent",borderImage: "url("+require("../assets/img/border.png")+") 51 32 18 66",},};},
}

4. 大屏比例和防抖

像素我用的是rem,这是一个CSS3的像素单位,主要是相对于HTML根元素变化,而px是相对于屏幕宽度变化,这里可以根据自己需求改动,宽度我是利用element-ui的Layout布局做的响应式,这里我最适应的屏幕大小是1920*944,但这是浏览器宽高,不适合大屏展示,所以我又写了一个全屏js,当然如果需要的话要调整一个布局高度,不然下面会因为内容没填满出现白边

export default {data() {return {fullscreen: false,};},methods:{// 全屏事件handleFullScreen() {let element = document.documentElement;if (this.fullscreen) {if (document.exitFullscreen) {document.exitFullscreen();} else if (document.webkitCancelFullScreen) {document.webkitCancelFullScreen();} else if (document.mozCancelFullScreen) {document.mozCancelFullScreen();} else if (document.msExitFullscreen) {document.msExitFullscreen();}} else {if (element.requestFullscreen) {element.requestFullscreen();} else if (element.webkitRequestFullScreen) {element.webkitRequestFullScreen();} else if (element.mozRequestFullScreen) {element.mozRequestFullScreen();} else if (element.msRequestFullscreen) {// IE11element.msRequestFullscreen();}}this.fullscreen = !this.fullscreen;},},
}

全屏主要是用于展厅大屏展示、公司大屏展示等

防抖函数是利用时间差去销毁重构图表,以起到防止变化过快出现的抖动

/*** @param {Function} fn 防抖函数* @param {Number} delay 延迟时间*/
export function debounce(fn, delay) {var timer;return function () {var context = this;var args = arguments;clearTimeout(timer);timer = setTimeout(function () {fn.apply(context, args);}, delay);};
}

5. 动态数据

因为我这里只用了一年的数据,就没什么动态效果,如果有多个年份的数据可以做地区城市攀爬和动态数据,所以是只是做了随机展示地图上的数据内容

export default {methods:{// 开启定时器startInterval() {if (this.intervalId !== null) {clearInterval(this.intervalId);}this.intervalId = setInterval(() => {this.reSelectMapRandomArea();}, 2000);},// 重新随机选中地图区域reSelectMapRandomArea() {this.$nextTick(() => {let index = Math.floor(Math.random() * this.data.length);this.chart.dispatchAction({type: 'showTip',seriesIndex: 0,dataIndex: index,});this.chart.dispatchAction({type: 'select',seriesIndex: 0,dataIndex: index,});});},handleMapRandomSelect() {this.$nextTick(() => {setTimeout(() => {this.reSelectMapRandomArea();}, 0);// 移入区域,清除定时器、取消之前选中并选中当前this.chart.on('mouseover', (params)=> {clearInterval(this.intervalId);});// 移出区域重新随机选中地图区域,并开启定时器this.chart.on('globalout', ()=> {this.reSelectMapRandomArea();this.startInterval();});this.startInterval();});},},
}

二、最终效果展示

演示地址:http://zspt_sf.gitee.io/data-visualization-view
效果图:

动态效果图:

三、源码地址

github地址:https://github.com/zsptsf/data-visualization
gitee地址:https://gitee.com/zspt_sf/data-visualization

Vue使用ECharts完成2020年全国各地区GDP总量大数据可视化面板(附源码)相关推荐

  1. 2020年全国信息安全标准化技术委员会大数据安全标准特别工作组全体会议即将召开...

    全国信息安全标准化技术委员会(TC260)(以下简称:委员会)大数据安全标准特别工作组(SWG-BDS)2020年首次全体会议即将在5月13-15日召开,会议由清华大学组织开展,工作组320多家成员单 ...

  2. 2020大数据学习资料,全套源码无加密网盘下载

    点击上方蓝字"优派编程"选择"加为星标",第一时间关注原创干货 前言--–2020最新大数据完整版,全套源码无加密网盘下载 java大数据: 大数据(big d ...

  3. 炫酷,SpringBoot+Echarts实现用户访问地图可视化(附源码)

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 SpringBoot+Echarts用户访问地图可视化 意义 在常 ...

  4. 【013】基于Vue的酒店客房管理系统(含管理员、普通用户两种身份(附源码数据库、课设报告)

    这里写目录标题 一.系统详细介绍 二.系统部分设计思路 三.项目获取 一.系统详细介绍 前言: 这次带来的是基于Nodejs+Vue+Mysql的酒店客房管理系统,含非常非常详细的课设报告,觉得物超所 ...

  5. (毕设2)esp8266+dht11+mysql+flask+echarts单片机温湿度数据采集网页实时可视化(附源码)

    目录 前言 单片机端 服务器端 网页端 成果展示 源码下载 前言 作者:齐鲁师范学院18云计算孙浩 QQ:2535640842 开发环境:Linux,Arduino ide, PyCharm 2020 ...

  6. python基于Echarts的城科就业数据可视化系统毕业设计源码150915

    Python城科就业数据可视化系统 摘 要 对于处理广泛的数据并整合到本地,Python爬虫有着自已强大的功能,面对城科就业数据可视化系统研究,我们考虑借助Python爬虫的功能对其实现相应的处理,本 ...

  7. Python+Vue计算机毕业设计大数据在线考试系统在线阅卷系统及大数据统计分析7o33p(源码+程序+LW+部署)

    该项目含有源码.文档.程序.数据库.配套开发软件.软件安装教程 项目运行环境配置: Python3.7.7+Django+Mysql5.7+pip list+HBuilderX(Vscode也行)+V ...

  8. 2020最新款影视小程序后端+前端搭建详细教程附源码

    准备工作 教程很详细一步步操作都可以上线,教程都是亲自发布的,希望各位要搬运的时候备注来自哪里 购买云服务器:教程等待更新 购买域名+配置ssl证书:教程待更新 常见问题: 问:域名需要备案吗? 回: ...

  9. (上)Vue+Echarts构建可视化大数据平台实战项目分享(附源码)

    前言 分享之前我们先来普及一下什么是数据可视化?数据可视化可以把数据从冰冷的数字转换成图形,揭示蕴含在数据中的规律和道理.数据可视化通俗来说就是:数据的展示.处理和分析.目的是借助于图形化手段,清晰有 ...

最新文章

  1. 重磅|我国科学家成功研制全球神经元规模最大的类脑计算机
  2. javascript es6 特性简介
  3. mysql8.0查看用户_MySQL 8.0用户及安全管理
  4. zookeeper zoo.cfg配置文件
  5. Harbor升级和数据库迁移手册
  6. c++ 添加按钮_使用 Visual Studio 2019 批量添加代码文件头
  7. 计算机专业论文周记20篇,毕业论文工作周记6篇
  8. 支付宝小程序链接跳转异常处理方法
  9. 成都博兰科技有限公司助宝兰网进入云贵川渝市场 www.beylai.com
  10. Busiest Computing Nodes (线段树维护区间最小值)
  11. 『软件推荐』PanDownload出安卓版了
  12. 开酒馆前的注意事项 (下)
  13. 【论文写作】如何画出好看的图表
  14. 【TSP问题】基于蜜蜂算法求解旅行商问题附matlab代码
  15. Python爬取特朗普就职演讲稿,使用ngram模型进行数据清洗
  16. 2019奥林匹克计算机竞赛试题,2019-2020年小学数学奥林匹克竞赛试题及答案三年级...
  17. android手机视频编辑,安卓手机如何使用视频编辑器给自己录制的视频去除原声并添加配乐?安卓手机视频编辑器...
  18. 港股打新丨放弃药明巨诺,搞蚂蚁金服
  19. Java判断用户是通过pc,还是安卓还是ios,还是微信客户端访问
  20. android向联系人中添加头像以及获得电话记录

热门文章

  1. 计算机中函数怎么弄,电脑公式怎么用
  2. 轻量的开源搜索引擎有哪些?
  3. ANSYS中各个单元的思考和分析(杆和梁)
  4. 如何设置word页脚中的总页码
  5. Android Eclipse使用.aar文件攻略
  6. 利用 CPU 流水线加快数据处理
  7. 模型调参利器--hyperopt
  8. sping boot 配置多数据源
  9. 浅谈浏览器标准模式与怪异模式、文档类型
  10. Maya2017下载安装与激活