当前位置:   article > 正文

【25】数据可视化:基于 Echarts + Python Flask框架动态实时大屏范例 - 企业宣传_数据可视化:基于 echarts + python flask 动态实时【拖放】大屏 - 数据分析看

数据可视化:基于 echarts + python flask 动态实时【拖放】大屏 - 数据分析看板.z

目录

效果展示

多主题样式

一、 确定需求方案

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

2、部署方式 

二、整体架构设计

三、编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码)

1、前端html代码 - 页面整体布局 

2、前端JS代码 - Echarts option设置

3、JSON 数据通信格式定义

4、前端数据定时更新控制

5、后端 flask 服务器

四、上线运行效果

五、启动命令

 六、源码下载

 更多精彩案例


写在前面,最近收到了小伙伴的建议,大屏的HTTP服务器是否可以由原来最简单的HTTPSERVER,再支持下 Python Flask 框架,这个框架在他们的工作中比较常用,又便于灵活扩展,所以应小伙伴之建议,诞生了这篇【基于 Echarts + Python Flask框架动态实时大屏范例 - 企业宣传】案例。

效果展示

  

  

一、 确定需求方案

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

根据电脑分辨率屏幕自适应显示,F11全屏查看;

2、部署方式 

B/S方式:支持Windows、Linux、Mac等各种主流操作系统;支持主流浏览器Chrome,Microsoft Edge,360等;服务器采用python语言编写,配置下python依赖即可。

二、整体架构设计

  1. 前端Echarts开源库:使用WebStorm编辑器;
  2. 后端 http服务器:基于 Python 实现,使用Pycharm或VSCode编辑器;
  3. 数据传输格式:JSON;
  4. 数据源类型:JSON文件。实际开发需求中,支持定制HTTP API接口方式或其它各种类型数据库,如PostgreSQL、MySQL、Oracle、Microsoft SQL Server、SQLite、Excel表格等。
  5. 数据更新方式:采用http get 轮询方式 。在实际开发需求中,采用后端数据实时更新,实时推送到前端这种方式具有实用性;

三、编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码)

1、前端html代码 - 页面整体布局 

  1. <div class="container_fluid">
  2. <!-- 标题栏 -->
  3. <div class="row_fluid">
  4. <div id="container_1" class="col-xs-12 col-md-12">
  5. </div>
  6. </div>
  7. <!-- 上栏 -->
  8. <div class="row_fluid">
  9. <!-- 上左栏 -->
  10. <div id="container_2" class="col-xs-12 col-md-4">
  11. <div id="container_2_1" class="col-xs-12 col-md-6">
  12. </div>
  13. <div id="container_2_2" class="col-xs-12 col-md-6">
  14. </div>
  15. <div id="container_2_3" class="col-xs-12 col-md-12">
  16. </div>
  17. </div>
  18. <!-- 上中栏 -->
  19. <div id="container_3" class="col-xs-12 col-md-4">
  20. <iframe src="myimg/video.mp4" scrolling="no" border=0 frameborder="no" framespacing=0
  21. allowfullscreen="true" width="100%" height="100%"> </iframe>
  22. </div>
  23. <!-- 上右栏 -->
  24. <div id="container_4" class="col-xs-12 col-md-4">
  25. <div id="container_4_1" class="col-xs-12 col-md-3">
  26. </div>
  27. <div id="container_4_2" class="col-xs-12 col-md-3">
  28. </div>
  29. <div id="container_4_3" class="col-xs-12 col-md-3">
  30. </div>
  31. <div id="container_4_4" class="col-xs-12 col-md-3">
  32. </div>
  33. <div id="container_4_5" class="col-xs-12 col-md-6">
  34. </div>
  35. <div id="container_4_6" class="col-xs-12 col-md-6">
  36. </div>
  37. </div>
  38. </div>
  39. </div>
  40. <!-- 下栏 -->
  41. <div class="row_fluid">
  42. <!-- 下左栏 -->
  43. <div id="container_5" class="col-xs-12 col-md-4">
  44. <div id="container_5_1" class="col-xs-12 col-md-12">
  45. </div>
  46. <div id="container_5_2" class="col-xs-12 col-md-12">
  47. </div>
  48. </div>
  49. <!-- 下中栏 -->
  50. <div id="container_6" class="col-xs-12 col-md-4">
  51. </div>
  52. <!-- 下右栏 -->
  53. <div class="col-xs-12 col-md-4">
  54. <div id="container_7" class="row_fluid">
  55. <div id="container_7_1" class="col-xs-12 col-md-6">
  56. </div>
  57. <div id="container_7_2" class="col-xs-12 col-md-6">
  58. </div>
  59. <div id="container_7_3" class="col-xs-12 col-md-12">
  60. </div>
  61. </div>
  62. </div>
  63. </div>

2、前端JS代码 - Echarts option设置

  1. var idContainer_4_5 = "container_4_5";
  2. function initEchart_4_5() {
  3. // 基于准备好的dom,初始化echarts实例
  4. var myChart = echarts.init(document.getElementById(idContainer_4_5), gTheme);
  5. option = {
  6. title: {
  7. text: "年龄分布",
  8. top: "10%",
  9. left: "center",
  10. textStyle: {
  11. color: "#17c0ff",
  12. fontSize: "12",
  13. },
  14. },
  15. tooltip: {
  16. trigger: "item",
  17. formatter: "{a} <br/>{b}: {c} ({d}%)",
  18. position: function (p) {
  19. //其中p为当前鼠标的位置
  20. return [p[0] + 10, p[1] - 10];
  21. },
  22. },
  23. grid: {
  24. left: "0",
  25. right: "10",
  26. bottom: "25%",
  27. top: "20%",
  28. containLabel: true,
  29. },
  30. xAxis: {
  31. type: "category",
  32. data: [],
  33. axisLabel: {
  34. textStyle: {
  35. color: "rgba(255,255,255,.8)",
  36. fontSize: 10,
  37. },
  38. },
  39. axisLine: {
  40. lineStyle: {
  41. color: "rgba(255,255,255,.2)",
  42. },
  43. },
  44. splitLine: {
  45. lineStyle: {
  46. color: "rgba(255,255,255,.1)",
  47. },
  48. },
  49. },
  50. yAxis: {
  51. type: "value",
  52. data: [],
  53. axisLabel: {
  54. textStyle: {
  55. color: "rgba(255,255,255,.8)",
  56. fontSize: 10,
  57. },
  58. },
  59. axisLine: {
  60. lineStyle: {
  61. color: "rgba(255,255,255,.2)",
  62. },
  63. },
  64. splitLine: {
  65. lineStyle: {
  66. color: "rgba(255,255,255,.1)",
  67. },
  68. },
  69. },
  70. series: [
  71. {
  72. name: "年龄分布",
  73. type: "bar",
  74. stack: "total",
  75. label: {
  76. show: true,
  77. },
  78. },
  79. ],
  80. };
  81. // 使用刚指定的配置项和数据显示图表。
  82. myChart.setOption(option);
  83. window.addEventListener("resize", function () {
  84. myChart.resize();
  85. });
  86. }
  87. function getKeys(dataList) {
  88. var keys = [];
  89. var len = dataList.length;
  90. for (var i = 0; i < len; i++) keys.push(dataList[i].name);
  91. return keys;
  92. }
  93. function asyncData_4_5() {
  94. $.getJSON("myjson/bar_age.json").done(function (data) {
  95. var myChart = echarts.init(document.getElementById(idContainer_4_5));
  96. myChart.setOption({
  97. xAxis: { data: getKeys(data) },
  98. series: [{ data: data }],
  99. });
  100. }); //end $.getJSON
  101. }
  102. initEchart_4_5();

3、JSON 数据通信格式定义

[{"name": "<18", "value": 2962}, {"name": "18-23", "value": 3119}, {"name": "24-30", "value": 2562}, {"name": "31-40", "value": 1024}, {"name": "41-50", "value": 2791}, {"name": ">50", "value": 4073}]

4、前端数据定时更新控制

  1. function asyncData() {
  2. asyncData_4_5();
  3. asyncData_4_6();
  4. asyncData_5_1();
  5. asyncData_5_2();
  6. asyncData_6();
  7. asyncData_7_1();
  8. asyncData_7_2();
  9. asyncData_7_3();
  10. // 定时从服务器更新数据
  11. setTimeout(asyncData, 1000);
  12. }

5、后端 flask 服务器

  1. app = Flask(__name__, static_folder="static", template_folder="template")
  2. @app.route('/')
  3. def hello_world():
  4. return 'Hello World!'
  5. # 主程序在这里
  6. if __name__ == "__main__":
  7. # 开启线程,触发动态数据
  8. a = threading.Thread(target=asyncJson.loop)
  9. a.start()
  10. # 开启 flask 服务
  11. app.run(host='0.0.0.0', port=88, debug=True)

四、上线运行效果

五、启动命令

  1. <!-- 启动server命令 -->
  2. python main.py
  3. <!-- 浏览器中输入网址查看大屏(端口为 main.py 中的 port 参数定义) -->
  4. http://localhost:88/static/index.html
  5. <!-- 更多资料参考我的博客主页 -->
  6. https://yydatav.blog.csdn.net/
  7. <!-- 更多案例参考 -->
  8. https://blog.csdn.net/lildkdkdkjf/article/details/120705616
  9. 我的微信号:6550523 欢迎多多交流

 六、源码下载

25【源码】数据可视化:基于 Echarts + Python Flask 动态实时大屏范例 - 企业宣传.zip

https://download.csdn.net/download/lildkdkdkjf/77313397

 更多精彩案例

YYDatav的数据可视化《精彩案例汇总》_YYDataV的博客-CSDN博客

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/441763
推荐阅读
相关标签
  

闽ICP备14008679号