小言_互联网的博客

32【源码】数据可视化:基于 Echarts + Java SpringBoot 动态实时大屏范例 - 监管系统

551人阅读  评论(0)

数据可视化大屏的出现,掀起一番又一番的浪潮,众多企业主纷纷想要打造属于自己的“酷炫吊炸天”的霸道总裁大屏驾驶舱。

之前有小伙伴们建议我出一些视频课程来学习Echarts,这样可以更快上手,所以我就追星赶月的录制了《Echarts - 0基础入门课程》,希望对有需要的小伙伴有帮助。

传送门

YYDatav的数据可视化大屏《精彩案例汇总》(Java SpringBoot&Echarts源码)_YYDataV的博客-CSDN博客

32【源码】数据可视化:基于Echarts+JavaSpringBoot动态实时大屏-银行监管系统.zip-企业管理文档类资源-CSDN下载

效果图展示

1.动态实时更新数据效果图

2.鼠标右键切换主题 

 

一、 确定需求方案

1、确定产品上线部署的屏幕LED分辨率

本案例基于16:9 屏宽比,F11全屏显示。

2、部署方式 

基于免安装可执行程序:支持Windows、Linux、Mac等各种操作系统;将程序复制到服务器上即可,无需其它环境依赖;

观看方式:既可在服务器上直接观看程序界面,也可在远程用浏览器打开播放,例如Chrome浏览器、360浏览器等。

二、整体架构设计

  1. 前端基于Echarts开源库设计,使用WebStorm编辑器;
  2. 后端基于Java Web实现,使用 IDEA 编辑器;
  3. 数据传输格式:JSON;
  4. 数据源类型:目前采用JSON文件方式,自行添加Mybatis可支持PostgreSQL、MySQL、Oracle、Microsoft SQL Server、SQLite,自行添加POI可支持Excel表格等,还可以定制HTTP API接口方式。
  5. 数据更新方式:采用http get 轮询方式 。在实际应用中,也可以视情况选择j监测后端数据实时更新,实时推送到前端的方式;

三、编码实现 (关键代码)

1、前端html代码 - 页面布局layout&样式style


  
  1. <div class="grid-container">
  2. <div id="lo_0">
  3. <h2>32 数据可视化-银行监管系统 </h2>
  4. </div>
  5. <div id="lo_1">
  6. </div>
  7. <div id="lo_2">
  8. </div>
  9. <div id="lo_3">
  10. </div>
  11. <div id="lo_4">
  12. </div>
  13. <div id="lo_5">
  14. </div>
  15. <div id="lo_6">
  16. </div>
  17. <div id="lo_7">
  18. </div>
  19. <div id="lo_8">
  20. <div style="height: 10%;">
  21. <button
  22. onclick= "async_echart_china('container_8', 'map_china_map/map_china_map.json', 'confirmAdd')">新增金额 </button>
  23. <button
  24. onclick= "async_echart_china('container_8', 'map_china_map/map_china_map.json', 'confirm')">累计金额 </button>
  25. <button
  26. onclick= "async_echart_china('container_8', 'map_china_map/map_china_map.json', 'nowConfirm')">现有金额 </button>
  27. </div>
  28. <div id="container_8" style="height: 90%;"> </div>
  29. </div>
  30. <div id="lo_9">9 </div>
  31. <div id="lo_10">10 </div>
  32. </div>

grid-container 定义


  
  1. .grid-container {
  2. display: grid;
  3. /* 6列,定义列宽 */
  4. grid-template-columns: 14% 14.5% 20% 20% 14.5% 14%;
  5. /* auto: 它用于自动设置行的高度,即取决于行中容器和内容的大小。 */
  6. grid-template-rows: 10% 25% 30% 30%;
  7. grid-gap: 10px;
  8. /* background-color: #2196F3; */
  9. padding: 0;
  10. width: 100%;
  11. height: 100%;
  12. }

对横跨多个行列的格子定义


  
  1. #lo_5 {
  2. grid-area: 3 / 1 / 4 / 3;
  3. }

2. 前端JS - echarts图表


  
  1. function init_echart_line_visualMap( container) {
  2. // 基于准备好的dom,初始化echarts实例
  3. var myChart = echarts. init( document. getElementById(container), gTheme);
  4. option = {
  5. title: {
  6. text: "股票市值实时监测",
  7. // top: 0,
  8. // left: "center",
  9. textStyle: {
  10. // color: "#17c0ff",
  11. fontSize: "12",
  12. },
  13. },
  14. tooltip: {
  15. trigger: "item",
  16. formatter: "{a} <br/>{b}: {c} ({d}%)",
  17. position: function ( p) {
  18. //其中p为当前鼠标的位置
  19. return [p[ 0] + 10, p[ 1] - 10];
  20. },
  21. },
  22. grid: {
  23. left: "3%",
  24. right: "3%",
  25. bottom: "3%",
  26. top: "25%",
  27. containLabel: true,
  28. },
  29. xAxis: {
  30. name: "名称",
  31. type: "category",
  32. data: [],
  33. axisLabel: {
  34. textStyle: {
  35. color: "rgba(255,255,255,.8)",
  36. //fontSize: 14,
  37. },
  38. // formatter: "{value}%",
  39. },
  40. axisLine: {
  41. lineStyle: {
  42. color: "rgba(255,255,255,.2)",
  43. },
  44. },
  45. splitLine: {
  46. lineStyle: {
  47. color: "rgba(255,255,255,.1)",
  48. },
  49. },
  50. },
  51. yAxis: {
  52. name: "亿元",
  53. type: "value",
  54. data: [],
  55. axisLabel: {
  56. textStyle: {
  57. color: "rgba(255,255,255,.8)",
  58. //fontSize: 14,
  59. },
  60. formatter: "{value}",
  61. },
  62. axisLine: {
  63. lineStyle: {
  64. color: "rgba(255,255,255,.2)",
  65. },
  66. },
  67. splitLine: {
  68. lineStyle: {
  69. color: "rgba(255,255,255,.1)",
  70. },
  71. },
  72. },
  73. visualMap: {
  74. top: "top",
  75. left: "right",
  76. textStyle: {
  77. color: "rgba(255,255,255,.8)",
  78. //fontSize: 14,
  79. },
  80. pieces: [
  81. {
  82. gt: 0,
  83. lte: 100,
  84. color: "#FF0000",
  85. },
  86. {
  87. gt: 100,
  88. lte: 800,
  89. color: "#FFA500",
  90. },
  91. {
  92. gt: 800,
  93. lte: 900,
  94. color: "#2E8B57",
  95. },
  96. ],
  97. },
  98. series: [
  99. {
  100. name: "年龄分布",
  101. type: "line",
  102. // stack: "total",
  103. // label: {
  104. // show: true,
  105. // },
  106. // 使用系统函数
  107. markPoint: {
  108. label: {
  109. textStyle: {
  110. color: "rgba(255,255,255,.8)",
  111. //fontSize: 14,
  112. },
  113. },
  114. data: [
  115. { type: "max", name: "Max" },
  116. { type: "min", name: "Min" },
  117. ],
  118. },
  119. markLine: {
  120. data: [{ type: "average", name: "Avg" }],
  121. },
  122. // 自定义数据
  123. // markLine: {
  124. // // 图形是否不响应和触发鼠标事件
  125. // silent: true,
  126. // label: {
  127. // textStyle: {
  128. // color: "rgba(255,255,255,.8)",
  129. // //fontSize: 14,
  130. // },
  131. // },
  132. // data: [
  133. // {
  134. // yAxis: 100,
  135. // lineStyle: {
  136. // color: "#FF0000",
  137. // },
  138. // },
  139. // {
  140. // yAxis: 800,
  141. // lineStyle: {
  142. // color: "#FFA500",
  143. // },
  144. // },
  145. // {
  146. // yAxis: 900,
  147. // lineStyle: {
  148. // color: "#2E8B57",
  149. // },
  150. // },
  151. // ],
  152. // },
  153. },
  154. ],
  155. };
  156. // 使用刚指定的配置项和数据显示图表。
  157. myChart. setOption(option);
  158. window. addEventListener( "resize", function ( ) {
  159. myChart. resize();
  160. });
  161. }
  162. function getKeys( dataList) {
  163. var keys = [];
  164. var len = dataList. length;
  165. for ( var i = 0; i < len; i++) keys. push(dataList[i]. name);
  166. return keys;
  167. }

3. 前端JS - 数据定时更新控制

支持在每个echarts图表中独立控制定时更新的间隔。


  
  1. // 定时1s执行数据更新函数
  2. setInterval( function ( ) {
  3. async_echart_bar_horizontal(
  4. container,
  5. path_bar_horizontal + "bar_horizontal.json"
  6. );
  7. }, 1000);

4、后端Java代码


  
  1. @RestController
  2. @RequestMapping("/json")
  3. public class Process {
  4. @RequestMapping("/{filename}")
  5. public String json( @PathVariable("filename") String filename) throws Exception {
  6. System. out.println(filename);
  7. ChangeJSON(filename);
  8. String jsonStr = readJSON(filename);
  9. System. out.println(jsonStr);
  10. return jsonStr;
  11. }

5、数据通信 JSON


  
  1. [
  2. {
  3. "name" : "10:00" ,
  4. "value" : 300
  5. } ,
  6. {
  7. "name" : "10:01" ,
  8. "value" : 301
  9. } ,
  10. {
  11. "name" : "10:02" ,
  12. "value" : 301
  13. } ,
  14. {
  15. "name" : "10:03" ,
  16. "value" : 300
  17. } ,
  18. {
  19. "name" : "10:04" ,
  20. "value" : 300
  21. } ,
  22. {
  23. "name" : "10:05" ,
  24. "value" : 303
  25. } ,
  26. {
  27. "name" : "10:06" ,
  28. "value" : 303
  29. } ,
  30. {
  31. "name" : "10:07" ,
  32. "value" : 303
  33. }
  34. ]

四、开发配置&代码结构说明

​数据可视化:基于 Echarts +Java SpringBoot 实现的动态实时大屏【Java开发环境搭建】

五. 运行效果

六、更多案例 


YYDatav的数据可视化大屏《精彩案例汇总》(Python&Echarts源码)_YYDataV的博客-CSDN博客

【工厂扫码打印&扫码装箱&错误追溯系统】完整案例详解(Python&PyQt 源码&Mysql数据库)_YYDataV数据可视化的博客-CSDN博客_pyqt案例

本次分享结束,欢迎讨论!QQ微信同号: 6550523 

 


转载:https://blog.csdn.net/lildkdkdkjf/article/details/125484979
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场