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


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

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

    传送门

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

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

    效果图展示

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

    2bff5af5d5944ea2a2630cd7c7b4be71.gif

    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 

     

  • 相关阅读:
    IDEA远程部署项目到Docker
    HDLbits: Fsm ps2
    骑行用什么蓝牙耳机好?骑行骨传导耳机推荐
    ②. GPT错误:图片尺寸写入excel权限错误
    MySql查询某个时间段内的数据(前一周、前三个月、前一年等)
    查询ES之细化需求实现多字段、范围过滤、加权和高亮
    在win10上安装配置Hadoop的环境变量
    比 JSON.stringify 快两倍的fast-json-stringify
    GPT4不限制使用次数了!GPT5即将推出了!
    SQL 的优化
  • 原文地址:https://blog.csdn.net/lildkdkdkjf/article/details/125484979