29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 – 企业综合信息

我是 YYDataV数据可视化
专注于 数据可视化大屏工厂扫码装箱系统
我的微信 6550523,多多交流 ~

本案例为32:9超宽分辨率的大屏。

效果展示

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

29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 企业综合信息

2.鼠标右键切换主题

代码中预置了12个主题风格,实际开发中可根据实际情况二次增加。

29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 企业综合信息

切换个主题,我们可以看到:主题的配色变化了。

29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 企业综合信息

一. 确定需求方案

1. 屏幕分辨率

这个案例的大屏分辨率是32:9,超炫的的宽屏比。

根据电脑分辨率屏幕自适应显示,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 轮询方式。在实际应用中,也可以视情况选择j监测后端数据实时更新,实时推送到前端的方式;

三.开发思路

1.设计布局

根据客户的实际需求,首先画出产品的 原型布局。这里我为了后期方便开发,对不同的div进行了 颜色和数字标识。参考index_layout.html

29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 企业综合信息

2. 设置模板

根据原始布局,将设计组提供的UI配置到模板中。参考index_template.html

29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 企业综合信息

3. 编写图表

做完以上工作,接下来就可以对div加载各式图表!至此,工作已经完成了一半的样子。

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

1. 前端html代码

使用bootstrap container-fluid, row, col等实现。

<div id="vue_app" class="container-fluid">
          <!-- 标题 -->
          <div class="row" style="height: 8%;">
               <h3 style="text-align: center; background-image: url(img/header.png); background-size: 100% 100%; ">
                    &#x3010;29&#x3011;&#x6570;&#x636E;&#x53EF;&#x89C6;&#x5316;&#x5927;&#x5C4F; - &#x4F01;&#x4E1A;&#x7EFC;&#x5408;&#x4FE1;&#x606F;</h3>
          </div>
          <!-- 外框 在row这里设置样式-->
          <div class="row" style="height: 90%;">
               <!-- 左侧1 -->
               <div class="col-2" id="container_l1" style="height: 100%; background-image: url(img/box.png); background-size: 98% 98%; background-repeat: no-repeat;">
                    <h5 style="text-align: center; margin-top: 15px;">&#x516C;&#x53F8;&#x6982;&#x51B5;</h5>
                    <div class="row" style="height: 18%;  margin-bottom: 10px;">
                         <div class="col-6" style="height: 100%; background-image: url(img/box4.png); background-size: 90%; background-repeat: no-repeat; background-position: center top;">
                              <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 90% auto; text-align: left; vertical-align: top; ">
                                   &#xA0;&#xA0;&#xA0;&#xA0;&#x8425;&#x4E1A;&#x989D;&#x8FBE;&#x6210;&#x7387;</h6>

                         </div>
                         <div class="col-6" style="height: 100%; background-image: url(img/box4.png); background-size: 90%; background-repeat: no-repeat; background-position: left top;">
                              <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 90% auto; text-align: left; vertical-align: top; ">
                                   &#xA0;&#xA0;&#xA0;&#xA0;&#x5229;&#x6DA6;&#x8FBE;&#x6210;&#x7387;</h6>

                         </div>
                    </div>

                    <div class="row" style="height: 28%; margin-bottom: 10px;">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x4F01;&#x4E1A;&#x6587;&#x5316;</h6>

                    </div>

                    <div class="row" style="height: 50%; margin-bottom: 10px;">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x5E02;&#x503C;&#x589E;&#x957F;</h6>

                    </div>

               </div>
               <!-- 左侧2 -->
               <div class="col-2" id="container_l2" style="height:100%; background-image: url(img/box.png); background-size: 98% 98%; background-repeat: no-repeat;">
                    <h5 style="text-align: center; margin-top: 15px;">&#x4EA7;&#x54C1;&#x6570;&#x636E;</h5>

                    <div class="row" style="height: 25%; margin-bottom: 10px; ">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x4EA7;&#x54C1;&#x4EBA;&#x529B;&#x5206;&#x5E03;</h6>

                    </div>

                    <div class=" row" style="height: 30%;  margin-bottom: 10px; ">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x65E5;&#x6D3B;&#x6570;&#x636E;</h6>

                    </div>

                    <div class="row" style="height: 42%;">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x4EA7;&#x54C1;&#x5370;&#x8C61;</h6>

                    </div>
               </div>
               <!-- 中间 -->
               <div class=" col-4" id="container_m1" style="height:100%; background-image: url(img/title.png); background-size: 70%; background-repeat: no-repeat; background-position: center top;">
                    <h5 style="text-align: center; margin-top: 15px;">&#x4E13;&#x6CE8;&#x6570;&#x636E;&#x53EF;&#x89C6;&#x5316;&#xFF0C;&#x52A9;&#x529B;&#x4F01;&#x4E1A;&#x667A;&#x80FD;&#x5316;</h5>

               </div>
               <!-- 右侧1 -->
               <div class="col-2" id="container_r1" style="height:100%; background-image: url(img/box.png); background-size: 98% 98%; background-repeat: no-repeat;">
                    <h5 style="text-align: center; margin-top: 15px;">&#x8FD0;&#x8425;&#x6982;&#x89C8;</h5>
                    <div class="row" style="height: 27%; margin-bottom: 10px; ">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x5BA2;&#x6237;&#x4F01;&#x4E1A;&#x753B;&#x50CF;</h6>

                    </div>

                    <div class="row" style="height: 30%; margin-bottom: 10px; ">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x8D44;&#x4EA7;&#x8D1F;&#x503A;&#x7387;</h6>

                    </div>

                    <div class="row" style="height: 40%; ">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x8BA2;&#x5355;&#x5B8C;&#x6210;&#x7387;</h6>

                    </div>
               </div>
               <!-- 右侧2 -->
               <div class="col-2" id="container_r2" style="height:100%; background-image: url(img/box.png); background-size: 98% 98%; background-repeat: no-repeat;">
                    <h5 style="text-align: center; margin-top: 15px;">&#x56E2;&#x961F;&#x98CE;&#x91C7;</h5>

                    <div class="row" style="height: 30%;">
                         <div class="col-6" style="height: 100%; background-image: url(img/box4.png); background-size: 90% 98%; background-repeat: no-repeat; background-position: center top;">
                              <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 90% auto; text-align: left; vertical-align: top; ">
                                   &#xA0;&#xA0;&#xA0;&#xA0;&#x6027;&#x522B;&#x5206;&#x5E03;</h6>

                         </div>
                         <div class="col-6" style="height: 100%; background-image: url(img/box4.png); background-size: 90% 98%; background-repeat: no-repeat; background-position: left top;">
                              <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 90% auto; text-align: left; vertical-align: top; ">
                                   &#xA0;&#xA0;&#xA0;&#xA0;&#x5E74;&#x9F84;&#x5206;&#x5E03;</h6>

                         </div>
                    </div>

                    <div class="row" style="height: 30%; margin-bottom: 10px;">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x5F00;&#x53D1;&#x4EA7;&#x54C1;&#x5206;&#x5E03;</h6>

                    </div>

                    <div class="row" style="height: 36%;  margin-bottom: 10px;">
                         <h6 style="background-image: url(img/title1.png); background-repeat: no-repeat; background-size: 50% auto; text-align: left; vertical-align: top; ">
                              &#xA0;&#xA0;&#x56E2;&#x961F;&#x7CBE;&#x795E;</h6>

                    </div>
               </div>
          </div></div>

2. JSON 通信数据定义

bar_ROA.json 如下

{
    "xAxis": {
        "data": [
            "01",
            "02",
            "03",
            "04",
            "05",
            "06",
            "07",
            "08",
            "09",
            "10"
        ]
    },
    "series": [
        {
            "data": [
                84,
                76,
                99,
                51,
                65,
                98,
                72,
                100,
                67,
                87
            ]
        }
    ]
}

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

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

 // &#x5B9A;&#x65F6;1s&#x6267;&#x884C;&#x6570;&#x636E;&#x66F4;&#x65B0;&#x51FD;&#x6570;
  setInterval(function () {
    async_echart_bar_horizontal(
      container,
      path_bar_horizontal + "bar_horizontal.json"
    );
  }, 1000);

4.后端 flask 服务器

from flask import Flask
app = Flask(__name__, static_folder="static", template_folder="template")

&#x4E3B;&#x7A0B;&#x5E8F;&#x5728;&#x8FD9;&#x91CC;
if __name__ == "__main__":

    # &#x5F00;&#x542F;&#x7EBF;&#x7A0B;&#xFF0C;&#x89E6;&#x53D1;&#x52A8;&#x6001;&#x6570;&#x636E;
    a = threading.Thread(target=asyncJson.loop)
    a.start()

    # &#x5F00;&#x542F; flask &#x670D;&#x52A1;
    app.run(host='0.0.0.0', port=88, debug=True)

四. 启动命令

<!-- 启动server命令 -->
python main.py

<!-- 浏览器中输入网址查看大屏(端口为 main.py 中的 port 参数定义) -->
http://localhost:88/static/index.html

<!-- 更多资料参考我的博客主页  -->
https://yydatav.blog.csdn.net/

<!-- 更多案例参考 -->
https://blog.csdn.net/lildkdkdkjf/article/details/120705616

&#x6211;&#x7684;&#x5FAE;&#x4FE1;&#x53F7;&#xFF1A;6550523  &#x6B22;&#x8FCE;&#x591A;&#x591A;&#x4EA4;&#x6D41;

五. 运行效果

29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 - 企业综合信息

六. 源码下载

29【源码】数据可视化大屏:基于Echarts+PythonFlask实现的32-9超宽大屏-企业综合信息.zip-企业管理文档类资源-CSDN下载

更多可视化案例

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

Original: https://blog.csdn.net/lildkdkdkjf/article/details/124270995
Author: YYDataV数据可视化
Title: 29【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏 – 企业综合信息

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/747119/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 小米手机通过USB连接MAC电脑

    1、手机端拿到”开发者权限”后,打开”USB调试”开关并将USB的用途设置为传输文件,各机型不同请自行百度。 2、如果你已经安装过h…

    Python 2023年6月10日
    0506
  • python简易俄罗斯方块

    from tkinter.messagebox import showinfo as msg from pygame.locals import * import tkinter …

    Python 2023年9月21日
    047
  • scrapy框架初识04-CrawlSpider

    – CrawlSpider:类,Spider的一个子类 – 全站数据爬取的方式 – 基于Spider:手动请求 – 基于CrawlSpider – CrawlSpider的使用: …

    Python 2023年10月3日
    041
  • 【详解】BiLSTM+CRF模型

    目录 * – + * 1 BiLSTM-CRF模型用途 * 2 BiLSTM-CRF模型介绍 * – 2.1 数据标签及模型架构 – + 2.1…

    Python 2023年10月7日
    072
  • matplotlib设定y轴坐标值正负对称_Matplotlib图鉴进阶折线图1012

    大家好,我们将继续分享进阶折线图图鉴。本文将讲解以下三个进阶的折线图绘制方法。 进阶折线图010 下面我们就来讲解如何绘制一个进阶折线图,注意,代码在以下环境全部通过测试: Pyt…

    Python 2023年9月5日
    046
  • 【PostgreSQL】PostgreSQL 15移除了Stats Collector

    试用即将发行的PostgreSQL 15的人会发现少了一个后台进程:​ 来和PostgreSQL 14比较一下:​ 是的,stats collector进程没有了。但是去掉这个进程…

    Python 2023年10月23日
    063
  • Python装饰器与迭代器的学习教程

    1什么是装饰器 装饰器就是装饰别人的工具,具体是指为被装饰者添加新功能,为一个新函数添加新功能 2为何要用装饰器 (开放封闭原则) 为了不修改被装饰者的源代码以及调用方式的前提下,…

    Python 2023年10月30日
    047
  • 可执行文件的装载

    装载方式 回顾一下操作系统的知识,程序执行的时候需要的指令和数级都必须在内存中时,程序才能正常运行,最简单的方式就是将指令和数级全部加载到内存中,这样肯定可以顺利执行,但这样的方式…

    Python 2023年11月8日
    044
  • Mysql InnoDB Redo log

    &#x53C2;&#x8003;&#x4E66;&#x7C4D;&#x300A;mysql&#x662F;&#x600E;&…

    Python 2023年10月16日
    044
  • 【Python Web】Flask框架(一)快速开发网站

    文章目录 * – Flask快速开发网站 – 网站优化 – + * html综合实例(二)-链接,表格,列表,表单,的使用 Flask快速开发网…

    Python 2023年8月9日
    046
  • Python数据分析中对DataFrame的数据分组处理groupby

    【小白从小学Python、C、Java】 【Python全国计算机等级考试】 【Python数据分析考试必会题】 ● 标题与摘要 Python数据分析中对DataFrame的 数据…

    Python 2023年8月7日
    047
  • Phoenix 对 Hbase 中表的映射

    目录 * – 1)表的关系 – 2)Hbase中创建表 test – 3)视图映射 – 4)表映射 – 数字类型说明 1…

    Python 2023年9月17日
    029
  • 将图片进行分割,并识别其bgr

    #导入numpy库和opencv库 import numpy as np import cv2 #读取图片,并对图片进行分割有效区域 img = cv2.imread("…

    Python 2023年8月27日
    036
  • [Spring]一文明白IOC容器和思想

    ✅作者简介:大家好,我是Philosophy7?让我们一起共同进步吧!🏆📃个人主页:Philosophy7的csdn博客🔥系列专栏: 数据结构与算法👑哲学语录: 承认自己的无知,乃…

    Python 2023年11月8日
    039
  • Python Web框架Django 和 Flask区别及使用

    Django和Flask是最流行的Python Web框架 Django 是一个由 Python 编写的一个开放源代码的 Web 应用框架。 使用 Django,只要很少的代码,P…

    Python 2023年8月12日
    049
  • 趋势检验方法(二)MK趋势检验

    MK(Mann-Kendall )检验 a基本原理: 使用MK算法检验时序数据大致趋势,趋势分为无明显趋势(稳定)、趋势上升、趋势下降。 MK检验的基础: 当没有趋势时,随时间获得…

    Python 2023年8月27日
    0192
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球