阅读本文大约需要3分钟

主要内容:数据分析。

适用人群:Python初学者,数据分析师,或有志从事数据分析工作的人员。

准备软件:Anaconda(Spyder:代码编译)、Navicat Premium 12(数据库)。

从事IT项目管理这么多年,基本上已经遗弃编程技能,但从2019年开始接触Python,深深地迷上了这门语言,像硬件集成、数据分析,我都会用python来写。晓风想通过本文,让初学者们学会以下内容:

1、Pyecharts图表;

2、连接数据库;

3、大屏看板-监控中心。

今天,我们讲:3、大屏看板如何布局

首先,我们自己先拟个大屏的草稿(如上图),把大屏分割成8个部分(Part0-7)。

大屏内容设计好后,接上文,我们把图表的函数都用代码写出来

from pyecharts import options as opts
from pyecharts.charts import Bar,Gauge,Pie,Page,Funnel,Geo,Scatter3D
import randomdef bar(): #柱状图cate = ['1月', '2月', '3月', '4月', '5月', '6月']c = (      Bar().add_xaxis(cate).add_yaxis("订单数", [random.randint(100, 200) for _ in cate]).add_yaxis("完成数", [random.randint(50, 100) for _ in cate]).set_series_opts(label_opts=opts.LabelOpts(is_show=True,color="#2CB34A")).set_global_opts(title_opts=opts.TitleOpts(title="2021年订单推移图",title_textstyle_opts=opts.TextStyleOpts(color="#2CB34A"),pos_left="5%"),legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(color="#2CB34A")),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color="#2CB34A")),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color="#2CB34A"))).set_colors(["blue", "green"])#.render("bar_stack0.html"))return cdef tab0(name,color): #标题c = (Pie().set_global_opts(title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=20))))return cdef tab1(name,color): #标题c = (Pie().set_global_opts(title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=25))))return cdef gau():#仪表图c = (Gauge(init_opts=opts.InitOpts(width="400px", height="400px")).add(series_name="库位利用率", data_pair=[["", 90]]).set_global_opts(legend_opts=opts.LegendOpts(is_show=False),tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{a} <br/>{b} : {c}%"),)#.render("gauge.html"))return cdef radius():cate = ['客户A', '客户B', '客户C', '客户D', '客户E', '其他客户']data = [153, 124, 107, 99, 89, 46]c=Pie()c.add('', [list(z) for z in zip(cate, data)],radius=["30%", "75%"],rosetype="radius")c.set_global_opts(title_opts=opts.TitleOpts(title="客户销售额占比", padding=[1,250],title_textstyle_opts=opts.TextStyleOpts(color="#FFFFFF")),legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(color="#FFFFFF"),type_="scroll",orient="vertical",pos_right="5%",pos_top="middle"))c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))c.set_colors(['red',"orange", "yellow", "green", "Cyan", "purple"])return cdef funnel():cate = ['访问', '注册', '加入购物车', '提交订单', '付款成功']data = [30398, 15230, 10045, 8109, 5698]c = Funnel()c.add("用户数", [list(z) for z in zip(cate, data)], sort_='ascending',label_opts=opts.LabelOpts(position="inside"))c.set_global_opts(title_opts=opts.TitleOpts(title=""))return cdef geo():city_num = [('武汉',105),('成都',70),('北京',99),('西安',80),('杭州',60),('贵阳',34),('上海',65),('深圳',54),('乌鲁木齐',76),('哈尔滨',47),('兰州',56),('信阳',85)]start_end = [('宁波','成都'),('武汉','北京'),('武汉','西安'),('长沙','杭州'),('武汉','贵阳'),('武汉','上海'),('甘肃','深圳'),('北京','乌鲁木齐'),('上海','哈尔滨'),('武汉','兰州'),('西藏','信阳')]c = Geo()c.add_schema(maptype='china', itemstyle_opts=opts.ItemStyleOpts(color='#323c48', border_color='white'))# 4.添加数据c.add('', data_pair=city_num, color='white')c.add('', data_pair=start_end, type_="lines",label_opts=opts.LabelOpts(is_show=False),effect_opts=opts.EffectOpts(symbol="arrow", color='gold', symbol_size=7))c.set_global_opts(title_opts = opts.TitleOpts(title=""))return cdef scatter3D():data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)) for _ in range(80)]c = (Scatter3D().add("", data).set_global_opts(title_opts=opts.TitleOpts(""),))

接下来,我们引用Page函数,将所有图表堆积在一个页面中,代码如下

from pyecharts.charts import Page
page = Page()
page.add(tab0("OFFICETOUCH","#2CB34A"), bar(),tab1("数据可视化大屏","#2CB34A"),gau(),radius(),funnel(),geo(),scatter3D())
page.render("datacenter.html")

我们运行下上述两段代码,发现布局是按照从上到下一个个呈现的,到此我们完成了一半的编码

为了将图表按照我们的草稿布局,我们再引用HTML(from bs4 import BeautifulSoup)

from bs4 import BeautifulSoup
with open("datacenter.html", "r+", encoding='utf-8') as html:html_bf = BeautifulSoup(html, 'lxml')divs = html_bf.select('.chart-container')divs[0]["style"] = "width:10%;height:10%;position:absolute;top:0;left:2%;"divs[1]["style"] = "width:40%;height:40%;position:absolute;top:12%;left:0;"  divs[2]["style"] = "width:35%;height:10%;position:absolute;top:2%;left:30%;"divs[3]["style"] = "width:40%;height:40%;position:absolute;top:10%;left:28%;"divs[4]["style"] = "width:40%;height:35%;position:absolute;top:12%;left:55%;"divs[5]["style"] = "width:30%;height:35%;position:absolute;top:60%;left:2%;"divs[6]["style"] = "width:60%;height:50%;position:absolute;top:45%;left:15%;"divs[7]["style"] = "width:35%;height:40%;position:absolute;top:50%;left:60%;"body = html_bf.find("body")body["style"] = "background-image: "  # 背景颜色html_new = str(html_bf)html.seek(0, 0)html.truncate()html.write(html_new)html.close()

代码中的divs[0]["style"] = "width:10%;height:10%;position:absolute;top:0;left:2%;" 即是我们对Part0的宽度、高度、位置、上边距、左边距的定义,这里我们用百分比以达到屏幕自适应的效果。

最后,我们还可以设置一张背景图,代码合起来如下

from pyecharts import options as opts
from pyecharts.charts import Bar,Gauge,Pie,Page,Funnel,Geo,Scatter3D
import randomdef bar(): #柱状图cate = ['1月', '2月', '3月', '4月', '5月', '6月']c = (      Bar().add_xaxis(cate).add_yaxis("订单数", [random.randint(100, 200) for _ in cate]).add_yaxis("完成数", [random.randint(50, 100) for _ in cate]).set_series_opts(label_opts=opts.LabelOpts(is_show=True,color="#2CB34A")).set_global_opts(title_opts=opts.TitleOpts(title="2021年订单推移图",title_textstyle_opts=opts.TextStyleOpts(color="#2CB34A"),pos_left="5%"),legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(color="#2CB34A")),xaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color="#2CB34A")),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(color="#2CB34A"))).set_colors(["blue", "green"])#.render("bar_stack0.html"))return cdef tab0(name,color): #标题c = (Pie().set_global_opts(title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=20))))return cdef tab1(name,color): #标题c = (Pie().set_global_opts(title_opts=opts.TitleOpts(title=name,pos_left='center',pos_top='center',title_textstyle_opts=opts.TextStyleOpts(color=color,font_size=25))))return cdef gau():#仪表图c = (Gauge(init_opts=opts.InitOpts(width="400px", height="400px")).add(series_name="库位利用率", data_pair=[["", 90]]).set_global_opts(legend_opts=opts.LegendOpts(is_show=False),tooltip_opts=opts.TooltipOpts(is_show=True, formatter="{a} <br/>{b} : {c}%"),)#.render("gauge.html"))return cdef radius():cate = ['客户A', '客户B', '客户C', '客户D', '客户E', '其他客户']data = [153, 124, 107, 99, 89, 46]c=Pie()c.add('', [list(z) for z in zip(cate, data)],radius=["30%", "75%"],rosetype="radius")c.set_global_opts(title_opts=opts.TitleOpts(title="客户销售额占比", padding=[1,250],title_textstyle_opts=opts.TextStyleOpts(color="#FFFFFF")),legend_opts=opts.LegendOpts(textstyle_opts=opts.TextStyleOpts(color="#FFFFFF"),type_="scroll",orient="vertical",pos_right="5%",pos_top="middle"))c.set_series_opts(label_opts=opts.LabelOpts(formatter="{b}: {d}%"))c.set_colors(['red',"orange", "yellow", "green", "Cyan", "purple"])return cdef funnel():cate = ['访问', '注册', '加入购物车', '提交订单', '付款成功']data = [30398, 15230, 10045, 8109, 5698]c = Funnel()c.add("用户数", [list(z) for z in zip(cate, data)], sort_='ascending',label_opts=opts.LabelOpts(position="inside"))c.set_global_opts(title_opts=opts.TitleOpts(title=""))return cdef geo():city_num = [('武汉',105),('成都',70),('北京',99),('西安',80),('杭州',60),('贵阳',34),('上海',65),('深圳',54),('乌鲁木齐',76),('哈尔滨',47),('兰州',56),('信阳',85)]start_end = [('宁波','成都'),('武汉','北京'),('武汉','西安'),('长沙','杭州'),('武汉','贵阳'),('武汉','上海'),('甘肃','深圳'),('北京','乌鲁木齐'),('上海','哈尔滨'),('武汉','兰州'),('西藏','信阳')]c = Geo()c.add_schema(maptype='china', itemstyle_opts=opts.ItemStyleOpts(color='#323c48', border_color='white'))# 4.添加数据c.add('', data_pair=city_num, color='white')c.add('', data_pair=start_end, type_="lines",label_opts=opts.LabelOpts(is_show=False),effect_opts=opts.EffectOpts(symbol="arrow", color='gold', symbol_size=7))c.set_global_opts(title_opts = opts.TitleOpts(title=""))return cdef scatter3D():data = [(random.randint(0, 100), random.randint(0, 100), random.randint(0, 100)) for _ in range(80)]c = (Scatter3D().add("", data).set_global_opts(title_opts=opts.TitleOpts(""),))return cpage = Page()
page.add(tab0("OFFICETOUCH","#2CB34A"), bar(),tab1("数据可视化大屏","#2CB34A"),gau(),radius(),funnel(),geo(),scatter3D())
page.render("datacenter.html")
#os.system("scatter.html")from bs4 import BeautifulSoup
with open("datacenter.html", "r+", encoding='utf-8') as html:html_bf = BeautifulSoup(html, 'lxml')divs = html_bf.select('.chart-container')divs[0]["style"] = "width:10%;height:10%;position:absolute;top:0;left:2%;"divs[1]["style"] = "width:40%;height:40%;position:absolute;top:12%;left:0;"  divs[2]["style"] = "width:35%;height:10%;position:absolute;top:2%;left:30%;"divs[3]["style"] = "width:40%;height:40%;position:absolute;top:10%;left:28%;"divs[4]["style"] = "width:40%;height:35%;position:absolute;top:12%;left:55%;"divs[5]["style"] = "width:30%;height:35%;position:absolute;top:60%;left:2%;"divs[6]["style"] = "width:60%;height:50%;position:absolute;top:45%;left:15%;"divs[7]["style"] = "width:35%;height:40%;position:absolute;top:50%;left:60%;"body = html_bf.find("body")body["style"] = "background-image: url(bgd.jpg)"  # 背景颜色html_new = str(html_bf)html.seek(0, 0)html.truncate()html.write(html_new)

效果图如下:

学习到了这里,你是否能独立完成数据可视化的工作了啊?晓风终于不辱使命,向大家完整地介绍了如何使用Python绘制数据可视化大屏。晓风还会继续努力,为大家带来更多有趣、实用、简单地Python功能,愿我们一起成长!

另两篇教程,如下:

1、Python大屏看板最全教程之Pyecharts图表:https://blog.csdn.net/weixin_42341655/article/details/118078089

2、Python大屏看板最全教程之数据库连接https://blog.csdn.net/weixin_42341655/article/details/118096691

如果觉得有用的话,请帮忙点赞、关注、收藏哦,感谢您的支持!

Python数据可视化大屏最全教程(全)相关推荐

  1. 27【源码】数据可视化大屏:基于 Echarts + Python Flask 实现的32-9超宽大屏范例 - 监控指挥中心

    目录 效果展示 1. 效果动图 2. 多种主题效果 一. 确定需求方案 1. 屏幕分辨率 2. 部署方式 二. 整体架构设计 三. 编码实现 (基于篇幅及可读性考虑,此处展示部分关键代码) 1. 前端 ...

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

    我是 YYDataV数据可视化  专注于 数据可视化大屏,工厂扫码装箱系统 等 我的微信 6550523,多多交流 ~ 本案例为32:9超宽分辨率的大屏. 效果展示 1.动态实时更新数据效果图 2.鼠 ...

  3. Python搭建一个系统信息实时监控数据可视化大屏

    本文分享使用python搭建服务器应用的监控系统面板,主要流程如下: 1.数据库中创建数据表 2.建立数据库连接 实时数据插入数据表,实时查询更新面板数据准备 3.监控中心大屏制作 具体步骤: 1.创 ...

  4. 基于JavaScript+Koa2实现 Echarts 电商平台数据可视化大屏全栈【100010415】

    全新 Echarts 电商平台数据可视化大屏全栈 1. 前言 五一假期重学了新版 Echarts,一个基于 JavaScript 的开源可视化图表库,收集参考了很多网上资料,最终选择电商平台作为练手项 ...

  5. 大数据可视化大屏设计经验,教给你!

     前言    大数据产业正在用一个超乎我们想象的速度蓬勃发展,大数据时代的来临,越来越多的公司开始意识到数据资源的管理和运用,大数据可视化大屏展示被更多的企业青睐,身为UI设计师的我们,也要紧跟时代的 ...

  6. YYDatav的数据可视化大屏《精彩案例汇总》(PythonEcharts源码)

    一. 资源下载 [1-10]套Python+Echarts数据可视化大屏案例(共10套)-企业管理文档类资源-CSDN下载第1篇https://yydatav.blog.csdn.net/articl ...

  7. 大数据可视化大屏设计经验分享

    前言 大数据产业正在用一个超乎我们想象的速度蓬勃发展,大数据时代的来临,越来越多的公司开始意识到数据资源的管理和运用,大数据可视化大屏展示被更多的企业青睐,身为UI设计师的我们,也要紧跟时代的步伐学习 ...

  8. Python制作可视化大屏(东京奥运会)

    目录 文章目录 前言 一.数据爬取 二.数据预处理 三.Pyecharts可视化 3.1 2020东京奥运会各国金牌分布图 3.2 2020东京奥运会奖牌榜详情 3.3 2020东京奥运会中国各项目获 ...

  9. 推荐三款高级可视化工具,解决90%的数据可视化大屏需求

    对于数据分析师来说,可视化可能是最能表现自己工作价值的一个途径,因为领导喜欢看这种直观的.炫酷的.具有科技感的可视化大屏,我们也能把数据分析结果直接展示给领导,比一份纸面报告要强不知多少倍! 那么领导 ...

  10. 怎么做数据可视化大屏?从设计到上线,一般用这3类工具

    数据可视化大屏成为了这两年很火爆的一个需求. 一方面,不少甲方都想做这么酷炫的大屏,用于公司展厅.日常经营监控,还有些特殊行业如交通.运输.工厂制造,会做更高级的3D建模等. 另一方面,市面上可提供做 ...

最新文章

  1. 服务国内超过70%游戏公司,腾讯游戏云发布游戏行业最全解决方案
  2. Android 画虚线边框
  3. 字符串的全排列(字典序排列)
  4. ELK日志管理之——elasticsearch部署
  5. Python自动化办公之Excel对比工具
  6. .Net 高效开发之不可错过的实用工具(转载)
  7. [转载] c++ cout 格式化输出浮点数、整数及格方法
  8. 内存管理之memblock探寻
  9. android 电视 vob格式转换,vob格式转换器免费版|闪电vob格式转换器 v9.7.0 免费版 - 软件下载 - 绿茶软件园|33LC.com...
  10. python矩形法求定积分_c程序用矩形法编一个通用函数求定积分0到1区间sinx,cosx,e的x次方,1+x,2x+3,(x*x)+1,e的x次方+1,(1+X)*(1+X),x*x*x...
  11. 用C++写一个简单的表白小程序
  12. 激光雷达RPLIDAR A1使用教程
  13. adb命令操作安卓hosts文件
  14. 中国准货币体系的概要简析
  15. 计算机教室使用与管理制度,《计算机教室使用与管理制度》
  16. C#中Skip和Take的用法
  17. 异步编排-CompletableFuture
  18. 你离大牛就差这10家国内知名的慕课网站。
  19. 一家快倒闭的茶馆如何通过一套商业模式改变现状,月盈利百万的方案分享!
  20. 如何给MySQL 数据瘦身

热门文章

  1. 2021-2-2有道翻译在线翻译爬虫
  2. Lync部署之Lync Mobile服务器端的外网设置
  3. 2021暑期学习之旅
  4. 用递归调用函数来把存在父子级别的数据封装成一个树状结构
  5. png和ico格式互相转换工具
  6. 李彦宏PK马云:后发制人与厚积博发
  7. mac java 更新命令行_Java 8 Update 71正在尝试安装新的帮助程序工具。 (在Mac上)...
  8. 如何把桌面路径设置到D盘
  9. wps大纲栏显示在右边_隐藏显示word页面标记,就这么几招,你会吗?
  10. cvc降噪和主动降噪_主动降噪技术有哪些?说说什么是ANC、ENC、DSP、CVC降噪