手把手教你做出数据可视化项目(七)可视化图表数据动态获取及界面跳转

数据可视化前言:https://blog.csdn.net/diviner_s/article/details/115933789
Apache Echarts简介:https://blog.csdn.net/diviner_s/article/details/115934089
项目最终效果图:
在这里插入图片描述
此篇博客为自己学习pink老师的课后完成的项目的总结与记录,仅供交流参考。版权所有,转载请标注原作者!
使用echarts技术做的可视图,此外其项目包含 的技术有html、css、js、jquerry、ajax、websocket、koa等。

写到这里我们的系列文也到了前端最后一个界面,做左侧第一个柱状图跳转子界面。

预告:下一篇开始就我们将前后端进行分离以及实现前后端交互。

文章目录

  • 实现数据动态获取
    • cookie存储信息
    • cookie创建
    • cookie读取
  • 子页面一
    • 纵向柱状图
    • 环形图
  • 子页面二
    • 柱状图
    • 饼图
  • CSS界面布局

实现数据动态获取

目的是使用同一个界面图表模板,通过点击不同的元素实现传输对应的不同数据进行展示。

左侧跳转界面不同数据展示
在这里插入图片描述
右侧跳转界面不同数据展示
在这里插入图片描述

cookie存储信息

Cookie 用于存储 web 页面的用户信息。在这里我们用cookie存储首页面点击柱状图元素下标
在这里插入图片描述

如上图,我们继续看针对左上柱状图的每个柱状体都对应着不同下标,因此我们使用cookie暂时存储下标。

cookie创建

  • 创建cookie:document.cookie = params.dataIndex默认情况下,cookie 在浏览器关闭时删除。
    我们现在首页左上柱状图试验一下:
    这段代码位置:
    在这里插入图片描述
    我们使用如下代码,打印获取的dataIndex和cookie值:

          //4.点击柱状图跳转myChart1.on('click', function (params) {console.log('dataIndex: ' + params.dataIndex);document.cookie = params.dataIndex;console.log('cookie: ' + document.cookie);//cookie传递params的数组下标//获取统计数据//先将跳转界面注释掉			//  window.location.href = 'childpage.html';});
    

点击不同柱体打印的就是不同cookie值,看右侧打印情况:
在这里插入图片描述
因此我们已经将对应index存入cookie,接下来就是读取cookie。

cookie读取

在 JavaScript 中, 可以使用var x = document.cookie来读取 cookie。

注意:document.cookie 将以字符串的方式返回所有的 cookie,类型格式: cookie1=value; cookie2=value; cookie3=value;

返回格式是字符串+;返回,因此我们使用分隔符取“‘;”前的数。

var jsonstr = document.cookie.split(';')[0];

在这里插入图片描述

子页面一

跳转动画展示
在这里插入图片描述
子页面展示
在这里插入图片描述
子页面给出两个图表,分别是关于行业分布的柱状图和关于行业班级比例的扇形图。

纵向柱状图

图表还不会配置的来这里!,后面直接放代码。
数据来源:采用Ajax的get(url,function())请求获取数据
这里需要注意的是:function是回调函数需要获取数据后存放在ret后,在done中进行数据的解析。

(function () {// 使用cookie存点击的数据var jsonstr = document.cookie.split(';')[0];console.log("cookie:" + jsonstr);//ajax的get请求获取数据$.get("data/case0", function (ret, status) {var job = []var number = []console.log("data长度:" + ret[jsonstr].length)console.log(ret)var maxn = 0;for (var i = 0; i < ret[jsonstr].length; i++) {var name = ret[jsonstr][i].namevar num = ret[jsonstr][i].numberif (maxn < num) maxn = numconsole.log(name + " " + num + "  ==== ")job.push(name)number.push(num)}// console.log(job)// console.log(number)var mCharts1 = echarts.init(document.getElementById("div1"))option1 = {grid: { containLabel: true },xAxis: {type: 'value',axisLabel: {color: '#fff',fontSize: "15"},axisLine: {lineStyle: {type: 'solid',color: '#fff',//左边线的颜色//width:'1'}}},yAxis: {name: '职业',type: 'category',axisLabel: {//color: "rgba(255,255,255,.6) ",color: '#fff',fontSize: "20"},axisLine: {lineStyle: {type: 'solid',color: '#fff',//左边线的颜色//width:'1'}},data: job,},visualMap: { //控制颜色渐变orient: ' ',left: 'center',min: 1,max: maxn,textStyle: {fontSize: 20,color: '#fff'},text: ['', '就业人数:'],// Map the score column to colordimension: 0,inRange: {color: ['#65B581', '#FFCE34', '#FD665F']}},series: [{data: number,type: 'bar',barWidth: "50%",label: {show: false},itemStyle: {// 修改柱子圆角barBorderRadius: 10}}],};mCharts1.setOption(option1)});
})();

环形图

(function () {var jsonstr = document.cookie.split(';')[0];//console.log("cookie2:" + jsonstr);$.get("http://127.0.0.1:8888/api/banjibili", function (ret, status) {console.log(ret)console.log(ret[jsonstr])var mCharts2 = echarts.init(document.getElementById("div2"))option2 = {tooltip: {trigger: 'item',formatter: '{b} : {c} ({d}%)'},color: ["#FE642E","#FE9A2E","#F4FA58","#ACFA58","#01DFD7","#0096ff","#8258FA","#FE2E9A"],legend: {top: "bottom",left: "center",//bottom: '0',textStyle: {color: '#fff',fontSize: 18}},series: [{type: 'pie',radius: ['40%', '70%'],avoidLabelOverlap: false,label: {show: false,position: 'center',},emphasis: {label: {show: true,fontSize: '30',fontWeight: 'bold'}},labelLine: {show: false},data: ret[jsonstr]}]};mCharts2.setOption(option2);/*******高亮显示开始**********/var _this2 = thisvar isSet2 = true // 为了做判断:当鼠标移动上去的时候,自动高亮就被取消var currentIndex2 = 0// 2、鼠标移动上去的时候的高亮动画mCharts2.on('mouseover', function (param) {isSet2 = falseclearInterval(_this2.startCharts)// 取消之前高亮的图形mCharts2.dispatchAction({type: 'downplay',seriesIndex: 0,dataIndex: currentIndex2})// 高亮当前图形mCharts2.dispatchAction({type: 'highlight',seriesIndex: 0,dataIndex: param.dataIndex})// 显示 tooltipmCharts2.dispatchAction({type: 'showTip',seriesIndex: 0,dataIndex: param.dataIndex})})// 3、自动高亮展示chartHover = function () {var dataLen = mCharts2.getOption().series[0].data.length //计算总的数组长度// 取消之前高亮的图形mCharts2.dispatchAction({type: 'downplay',seriesIndex: 0,dataIndex: currentIndex2})currentIndex2 = (currentIndex2 + 1) % dataLen// 高亮当前图形mCharts2.dispatchAction({type: 'highlight',seriesIndex: 0,dataIndex: currentIndex2})// 显示 tooltipmCharts2.dispatchAction({type: 'showTip',seriesIndex: 0,dataIndex: currentIndex2})}_this2.startCharts = setInterval(chartHover, 1000)// 4、鼠标移出之后,恢复自动高亮mCharts2.on('mouseout', function (param) {if (!isSet2) {_this2.startCharts = setInterval(chartHover, 1000)isSet2 = true}})/*******高亮显示结束**********/});
})();

子页面二

跳转动画展示
在这里插入图片描述
子页面展示

在这里插入图片描述

柱状图

(function () {//不同就业去向var jsonstr = document.cookie.split(';')[0];console.log("cookie:" + jsonstr);$.get("http://127.0.0.1:8888/api/nannv", function (ret, status) {var data1 = ret[jsonstr].data;var myChart = echarts.init(document.getElementById("div1"));var option = {legend: {bottom: "0%",textStyle: {color: "write"}},tooltip: {},dataset: {dimensions: ['product', '男', '女'],source: data1},xAxis: {type: 'category',axisLabel: {color: '#fff',fontSize: "20"},axisLine: {lineStyle: {type: 'solid',color: '#fff',}},},yAxis: {name: "人数",axisLabel: {color: '#fff',fontSize: "20"},axisLine: {lineStyle: {type: 'solid',color: '#fff',}},},barWidth: "30%",series: [{type: 'bar', itemStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(0, 221, 255)'}, {offset: 1,color: 'rgba(77, 119, 255)'}])},label: {show: true,position: 'top',color: "white",fontSize: 20},barGap: "20%"},{type: 'bar', color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(255, 0, 135)'}, {offset: 1,color: 'rgba(135, 0, 157)'}]),label: {show: true,position: 'top',color: "white",fontSize: 20},},]};myChart.setOption(option);})
})();

饼图

(function () {//班级男生人数var jsonstr = document.cookie.split(';')[0];$.get("http://127.0.0.1:8888/api/nannv", function (ret, status) {var data1 = ret[jsonstr].nan;//班级女生人数var data2 = ret[jsonstr].nv;var myChart = echarts.init(document.getElementById('div2'));var option;option = {tooltip: {trigger: 'item',formatter: function (params) {// do some thingconsole.log(params)return params.name + ":" + params.value + "人"}},// legend: {//   orient: 'vertical',//   left: 'left',//   bottom: "0%",//   itemWidth: 30,//   itemHeight: 30,//   textStyle: {//     color: "write"//   }// },series: [{type: 'pie',radius: '60%',itemStyle: {normal: {label: {fontSize: 20,show: true,position: [0, -20],color: '#ddd',formatter: function (params) {var percent = 0;var total = 0;total += data1 + data2;percent = ((params.value / total) * 100).toFixed(0);if (params.name !== '') {return params.name + ':' + percent + '%';} else {return '';}},},labelLine: {length: 15,length2: 10,show: true,color: '#00ffff',},},},data: [{value: data1, name: '男',itemStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(0, 221, 255)'}, {offset: 1,color: 'rgba(77, 119, 255)'}])}},{value: data2, name: '女',itemStyle: {color: new echarts.graphic.LinearGradient(0, 0, 0, 1, [{offset: 0,color: 'rgba(255, 0, 135)'}, {offset: 1,color: 'rgba(135, 0, 157)'}])}}],emphasis: {itemStyle: {shadowBlur: 10,shadowOffsetX: 0,shadowColor: 'rgba(0, 0, 0, 0.5)'}}}]};myChart.setOption(option)})
})()

CSS界面布局

两个子界面使用的同一个CSS布局

* {margin: 0;padding: 0;box-sizing: border-box;
}
li {list-style: none;
}
/* 声明字体*/
@font-face {font-family: electronicFont;src: url(../font/DS-DIGIT.TTF);
}
body {background: url(../images/bg.jpg) no-repeat top center;line-height: 1.15;overflow:hidden;
}
header {position: relative;height: 1.25rem;background: url(../images/head_bg.png) no-repeat;background-size: 100% 100%;
}
header h1 {font-size: 0.475rem;color: #fff;text-align: center;line-height: 1rem;
}
header .showTime {position: absolute;right: 0.375rem;top: 0;line-height: 0.9375rem;color: rgba(255, 255, 255, 0.7);font-size: 0.25rem;
}
.mainbox {display: flex;min-width: 1024px;max-width: 1920px;margin: 0 auto;padding: 1.4rem 0.125rem 0;
}
.mainbox .column {flex: 5;
}
.mainbox .column:nth-child(2) {flex: 3;margin: 0 0.125rem 0.1875rem;overflow: hidden;
}
.mainbox .panel {position: relative;height: 9rem;padding: 0 0.1875rem 0.1rem 0.5rem;border: 1px solid rgba(25, 186, 139, 0.17);margin-bottom: 0.1875rem;background: url(../images/line.png) rgba(255, 255, 255, 0.03);
}
.mainbox .panel::before {position: absolute;top: 0;left: 0;width: 10px;height: 10px;border-left: 2px solid #02a6b5;border-top: 2px solid #02a6b5;content: "";
}
.mainbox .panel::after {position: absolute;top: 0;right: 0;width: 10px;height: 10px;border-right: 2px solid #02a6b5;border-top: 2px solid #02a6b5;content: "";
}
.mainbox .panel .panel-footer {position: absolute;bottom: 0;left: 0;width: 100%;
}
.mainbox .panel .panel-footer::before {position: absolute;left: 0;bottom: 0;width: 10px;height: 10px;border-left: 2px solid #02a6b5;border-bottom: 2px solid #02a6b5;content: "";
}
.mainbox .panel .panel-footer::after {position: absolute;bottom: 0;right: 0;width: 10px;height: 10px;border-right: 2px solid #02a6b5;border-bottom: 2px solid #02a6b5;content: "";
}
.mainbox .panel h2 {height: 0.6rem;color: #fff;line-height: 1.6rem;text-align: center;font-size: 0.45rem;font-weight: 400;
}.mainbox .panel .chart {height: 8rem;
}


有不懂的可以私聊我,有需要echarts.js、jQuery.js、echarts-gl.js开源库。
评论区留下邮箱,我看到都会发给你的。


项目源码我放在我的分享的资源里了,需要请自取

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

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

相关文章

会展行业年度总结,鲸会务深入探索双线会议领域

2021的日历只剩单薄的几页&#xff0c;又到了盘点与回顾这一年的时间。因为众所周知的原因&#xff0c;整个会议会展行业都在震荡中发展&#xff0c;而防控政策也客观上加速了行业的数字化升级&#xff0c;双线会议会展甚至线上会议会展成为大势所趋。在此过程中&#xff0c;一…

ChatGPT有几个版本,哪个版本最强,如何选择适合自己的?

​ChatGPT就像内容生产界的瑞士军刀。它可以是数学导师、治疗师、职业顾问、编程助手&#xff0c;甚至是旅行指南。只要你知道如何让它做你想做的事&#xff0c;ChatGPT几乎可以提供你要的任何东西。 但重要的是&#xff0c;你知道哪个版本的ChatGPT最能满足你的需求吗&#x…

明朝第一才子杨慎十首诗词

杨慎(1488&#xff5e;1559)&#xff0c;公认为明朝三大才子之首。“相如赋&#xff0c;太白诗&#xff0c;东坡文&#xff0c;升庵科第。”前面的几个大家可能都猜得出来&#xff0c;司马相如的赋&#xff0c;李白的诗&#xff0c;苏东坡的文&#xff0c;而所谓的“升庵科第”…

Python爬虫——爬取古诗词

文章目录 前言一、基本目标二、使用步骤1.进行分析2.整体代码 结果总结 前言 &#x1f338;当你喜欢哪个诗人&#xff0c;想获取他的全部诗词数据的时候&#xff0c;可以通过爬虫来解决这个问题&#xff0c;用爬虫把诗词全部爬下来&#xff0c;然后存到txt文档中&#xff0c;打…

LLM-GPT系列:GPT-1(201806)【1.17亿、5GB】、GPT-2(201902)【15亿、40GB】、GPT-3(202005)【1750亿、45TB】【OpenAI】

GPT1:Imporoving Language Understanding By Generative Pre-training GPT2:Lanuage Models Are Unsupervised Multitask Learners GPT3:Language Models Are Few-shot Learners GitHub:https://github.com/openai/gpt-3 从GPT三个版本的论文名也能看出各版本模型的重点…

汇正财经靠谱吗?沪深创均深V反弹,科创50大涨

盘面回顾&#xff1a; 沪深创午后均多头反击&#xff0c;实现探底回升翻红&#xff0c;截止收盘沪指涨0.09%&#xff0c;深成指涨0.44%&#xff0c;创业板指涨0.67%&#xff0c;科创50大涨1.56%。脑机接口概念股继续大涨&#xff0c;算力、ChatGPT概念股午后再有走强&#xff…

云原生:数字化转型的关键驱动力

作者 | 刘凡 责编 | 梦依丹 出品 | CSDN&#xff08;ID&#xff1a;CSDNnews&#xff09; 随着 Docker、K8s、云原生等技术的演进&#xff0c;为企业数字化转型提供了一种更加现代化的 IT 平台&#xff0c;本文作者是云原生一体化平台 Rainbond 创始人刘凡&#xff0c;他…

几个快速提升工作效率的小工具(Listary等)分享一下(强烈建议收藏)

您好&#xff0c;我是码农飞哥&#xff0c;感谢您阅读本文&#xff01;如果此文对您有所帮助&#xff0c;读者朋友们毫不犹豫的给个一键三连呗 文章目录 给方法名命名的工具搜索工具下载使用 总结结尾彩蛋 给方法名命名的工具 不知道你是否有在给方法或者类起一个合适的方法名…

可以帮助提升程序员高效工作效率的常用小工具推荐

给大家分享一些程序员的实用工具&#xff0c;工具用得好&#xff0c;帮助你快速提升效率。 1、Xmind思维导图 Xmind是一款比较适合记录想法的软件&#xff0c;尤其是在当你负责项目的时候&#xff0c;把项目的各方面想法进行细化和展现出来&#xff0c;不用大量的文字来…

一位老程序员的退休忠告:别想着靠技术生存一辈子!

点击关注公众号&#xff0c;Java干货及时送达&#x1f447; 笔者目前是自己单干&#xff0c;但此前有多年在从事软件开发工作&#xff0c;回头想想自己&#xff0c;特别想对那些初学JAVA/DOT、NET技术的朋友说点心里话&#xff0c;希望我们的体会多少能给你们一些启发。 一、 在…

.NET5发布,这个微软“全家桶”会是.NET的春天吗?

在全面开源的步伐下&#xff0c;微软也逐步跟上了脚步&#xff0c;作为微软最早迈向开源的重要软件之一&#xff0c;.NET 5的发布对微软及其使用者都具有重要意义。 微软未来目标是将所有的 .NET 组件整合到一个产品下&#xff0c;然后用户可以根据需求使用 .NET 的某个部分&a…

让AI为你制作思维导图 —— ChatMind

ChatMind是什么 ChatMind&#xff0c;是一款利用与 AI 的对话中生成和编辑思维导图的工具&#xff0c;支持上下文改写扩充对话&#xff0c;ChatMind AI 可用于多种场景&#xff0c;例如记笔记、日程安排、项目管理、头脑风暴、框架等等。 既能帮助用户快速总结分析&#xff0…

AI写代码靠谱吗?

ChatGPT出来半年多了&#xff0c;用GPT编码的程序员有多少&#xff1f;虽然没有数据支撑&#xff0c;但我感觉用AI编码程序员并不多。我问过几个朋友&#xff0c;他们的回复是&#xff0c;AI没办法完成他想要完成的任务&#xff0c;最终还是得靠自己去写。 GPT真的没办法帮助程…

linux下oracle死机,Linux系统参数造成的Oracle服务器停止响应

环境&#xff1a; Oracle 11gr2 dataguard 512GB内存 128核cpu 高性能存储服务器 uname -an Linux dbhost 2.6.18-238.el5 #1 SMP Sun Dec 19 14:22:44 EST 2010 x86_64 x86_64 x86_64 GNU/Linux 症状&#xff1a; 做rman备份时&#xff0c;系统内存急剧下降&#xff0c;直到…

运行配置停止之前未连接应用程序服务器,原因: 无法在 localhost:1099处 ping 服务器

解决方法&#xff1a; 打开idea的编辑配置&#xff1a; 记得点击应用和确定 &#xff01;

vac服务器未响应,csgo国服游戏停止工作、未响应的解决方法

CSGO是一款玩家非常喜爱的射击游戏&#xff0c;但玩家常常面临的停止工作的现象&#xff0c;有时会跳出、未响应&#xff0c;那么应该如何解决呢&#xff1f;下面小编带来了csgo国服游戏停止工作、未响应的解决方法&#xff0c;希望对大家有所帮助。 游戏停止工作、未响应的解决…

服务器停止响应是什么意思,该如何排查?

服务器停止响应意味着什么?在租用网站服务器的过程中&#xff0c;我们总是会遇到各种各样的问题&#xff0c;比如最麻烦的网站服务器没有响应。让我们简单地谈谈网站服务器停止响应意味着什么&#xff0c;什么情况会没有响应&#xff0c;以及如何解决它。 什么是服务器停止响…

誉天程序员-常用网站

学习方法六大招 日常你是如何学习新知识的&#xff1f;&#xff08;面试官爱问哦&#xff09; 1、百度百科概念了解 2、技术官网简单了解 3、同类产品技术选型 4、百度搜索入门案例 5、泛读百文瘦弱圆润 6、遇到问题问AI助手&#xff08;chatGPT&#xff09;噢 技术路线图&a…

python创建智能问答机器人

微信和chatgpt 这个在另外一篇文章&#xff1a;微信接入chatgpt 背景 最近一直都在忙做文本机器人的事情&#xff0c;所以就很少发公众号文章了。目前机器人的代码&#xff0c;已经全部发布在github上了。做机器人的目的&#xff1a;一方面是为了锻炼自己的代码能力&#xf…

机器人 Ameca「苏醒」瞬间逼真到令人恐惧,网友纷纷惊叹……

整理 | 禾木木 出品 | AI科技大本营&#xff08;ID:rgznai100&#xff09; 近日&#xff0c;国内外网友都被一段机器人「苏醒」的视频惊讶到。 视频开始时&#xff0c;机器人似乎已经睡着&#xff0c;眼睛闭着&#xff0c;头部略微向下倾斜。随着肩膀的伸展&#xff0c;机器…