PywebIO 轻松制作一个数据大屏,代码只需100行
今天我给大家分享一个制作数据大屏的工具,非常的好用,100行的Python
代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解。
PywebIO
介绍
Python
当中的PywebIO
模块可以帮助开发者在不具备HTML
和JavaScript
的情况下也能够迅速构建Web
应用或者是基于浏览器的GUI
应用,PywebIO
还可以和一些常用的可视化模块联用,制作成一个可视化大屏,
我们先来安装好需要用到的模块
pip install pywebio
pip install cutecharts
上面提到的cutecharts
模块是Python
当中的手绘风格的可视化神器,相信大家对此并不陌生,我们来看一下它与PywebIO
模块结合绘制图表的效果是什么样的,代码如下
from cutecharts.charts import Bar
from cutecharts.faker import Fakerfrom pywebio import start_server
from pywebio.output import put_htmldef bar_base():chart = Bar("Bar-基本示例", width="100%")chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")chart.add_series("series-A", Faker.values())put_html(chart.render_notebook())if __name__ == '__main__':start_server(bar_base, debug=True, port=8080)
output
上述代码的逻辑并不难看懂,先实例化一个直方图Bar()
对象,然后填上X
轴对应的标签以及对应Y
轴的值,最后调用PywebIO
模块当中的put_html()
方法,我们会看到一个URL
在浏览器当中输入该URL
便能够看到我们绘制出来的图表。当然在cutecharts
模块当中有Page()
方法来将各个图表都连接起来,做成一张可视化大屏,代码如下
def bar_base():chart = Bar("Bar-基本示例", width="100%")chart.set_options(labels=Faker.choose(), x_label="I'm xlabel", y_label="I'm ylabel")chart.add_series("series-A", Faker.values())return chartdef pie_base() -> Pie:chart = Pie("标题", width="100%")........return chartdef radar_base() -> Radar:chart = Radar("标题", width="100%")......return chartdef line_base() -> Line:chart = Line("标题", width="100%")......return chartdef main():page = Page()page.add(pie_base(), pie_base(), radar_base(), line_base(), bar_base())put_html(page.render_notebook())if __name__ == '__main__':start_server(main, debug=True, port=8080)
output
PywebIO
和Pyecharts
的组合
当PywebIO
模块遇上Pyecharts
模块时,代码的逻辑基本上和cutecharts
的一致,先是实例化一个图表的对象,然后在添加完数据以及设置好图表的样式之后,最后调用put_html()
方法将最后的结果在浏览器中呈现
# `chart` 是你的图表的实例
pywebio.output.put_html(chart.render_notebook())
在这个案例当中我们调用Pyecharts
当中的组合组件,分别来呈现绘制完成的图表,代码如下
def bar_plots():bar = (Bar().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Bar")))return bardef line_plots():line = (Line().add_xaxis(Faker.choose()).add_yaxis("商家A", Faker.values()).add_yaxis("商家B", Faker.values()).set_global_opts(title_opts=opts.TitleOpts(title="Grid-Line", pos_top="48%"),legend_opts=opts.LegendOpts(pos_top="48%"),))return linedef main():c = (Grid().add(bar_plots(), grid_opts=opts.GridOpts(pos_bottom="60%")).add(line_plots(), grid_opts=opts.GridOpts(pos_top="60%")))c.width = "100%"put_html(c.render_notebook())if __name__ == '__main__':start_server(main, debug=True, port=8080)
output
PywebIO
和Bokeh
的组合
PywebIO
和Bokeh
的组合从代码的语法上来看会稍微和上面的不太一样,具体的不同如下所示
from bokeh.io import output_notebook
from bokeh.io import showoutput_notebook(notebook_type='pywebio')
fig = figure(...)
...
show(fig)
例如我们来绘制一个简单的直方图,代码如下
def bar_plots():output_notebook(notebook_type='pywebio')fruits = ['Apples', 'Pears', 'Nectarines', 'Plums', 'Grapes', 'Strawberries']counts = [5, 3, 4, 2, 4, 6]p = figure(x_range=fruits, plot_height=350, title="Fruit Counts",toolbar_location=None, tools="")p.vbar(x=fruits, top=counts, width=0.9)p.xgrid.grid_line_color = Nonep.y_range.start = 0show(p)if __name__ == "__main__":start_server(bar_plots, debug=True, port=8080)
output
基于浏览器的GUI
应用
除了将Pywebio
模块与常用的可视化模块结合用于各种图表的绘制之外,我们还能用它构建一个基于浏览的图形界面,我们先来做一个最为简单的应用,代码如下
from pywebio.input import *
from pywebio.output import *data = input_group("用户数据",[input("请问您的名字是: ", name="name", type=TEXT),input("输入您的年龄", name="age", type=NUMBER),radio("哪个洲的",name="continent",options=["非洲","亚洲","澳大利亚","欧洲","北美洲","南美洲",],),checkbox("用户隐私条例", name="agreement", options=["同意"]),],
)put_text("表格输出:")put_table([["名字", data["name"]],["年龄", data["age"]],["位置", data["continent"]],["条例", data["agreement"]],]
)
output
当中部分函数方法的解释如下:
input()
: 文本内容的输入radio()
: 代表的是单选框checkbox()
: 代表的是多选框input_group()
: 代表的是输入组put_table()
: 代表的是输出组put_text()
: 代表的是输出文本
推荐文章
- 上瘾了,最近又给公司撸了一个可视化大屏(附源码)
- 如此优雅,4款 Python 自动数据分析神器真香啊
- 梳理半月有余,精心准备了17张知识思维导图,这次要讲清统计学
- 年终汇总:20份可视化大屏模板,直接套用真香(文末附源码)
技术交流
欢迎转载、收藏、有所收获点赞支持一下!
目前开通了技术交流群,群友已超过2000人,添加时最好的备注方式为:来源+兴趣方向,方便找到志同道合的朋友
- 方式①、发送如下图片至微信,长按识别,后台回复:加群;
- 方式②、添加微信号:dkl88191,备注:来自CSDN
- 方式③、微信搜索公众号:Python学习与数据挖掘,后台回复:加群
PywebIO 轻松制作一个数据大屏,代码只需100行相关推荐
- 50 行 Python 代码制作一个数据大屏
今天给大家分享一个制作数据大屏的工具,非常的好用,100行左右的Python代码就可以制作出来一个完整的数据大屏,并且代码的逻辑非常容易理解. PywebIO介绍 Python当中的PywebIO模块 ...
- 如何制作一个可视化大屏模板
今天我们来一篇demo实例来讲述如何用finereport制作一个合格的大屏demo. 按照文章中所言的几种常见排布方式: 以上是几种常见的大屏排布方式,依据各个大屏模板所需要展示的具体信息我们可以自 ...
- android 蓝牙耗电量,安卓Android BLE低功耗蓝牙接受数据详解 只需100行代码轻松搞定...
做了一个安卓手机通过蓝牙获取电子秤的重量的Demo,在此写下以供大家参考和讨论. 先上代码,着急用的可以迅速参考,后面再写说明 我跳过了扫描过程,直接根据蓝牙设备地址进行连接,可以运行官方Demo来获 ...
- 华为太空人智能表盘代码仅需100行?
摘要:我来告诉你他到底有什么秘密,风儿风儿吹风儿风儿吹吹!听说最近太空人智能表盘很火啊,那么如何用C++做一个好玩的智能太空人表盘呢?安排! 软件工具:Vsiual studio 201x 1.安装V ...
- 只需100 行代码,直接干掉文本编辑器中草稿箱功能
1 使用备忘录模式实现草稿箱功能 大家都用过网页中的富文本编辑器,编辑器通常都会附带草稿箱.撤销等操作.下面用一段代码来实现一个这样的功能.假设,我们在 GPer 社区中发布一篇文章,文章编辑的过程需 ...
- 0代码搭建数据大屏技术 - 观远(AI+BI)商业智能数据分析平台
大数据时代,企业的任何规划和决策都离不开数据分析的支撑.领导开会要看数据,项目拉投资要看数据,活动复盘要看数据-- 而传统的看数据方式要提前知晓领导需要哪些维度的数据,再由数据分析师基于历史数据做好报 ...
- 数据卡片_手把手教你构建企业实时数据大屏
大数据时代,企业的任何规划和决策都离不开数据分析的支撑.领导开会要看数据,项目拉投资要看数据,活动复盘要看数据-- 而传统的看数据方式要提前知晓领导需要哪些维度的数据,再由数据分析师基于历史数据做好报 ...
- web大屏展示用到的组件_从零开始设计数据大屏—基于Vue
为什么要做数据大屏? 现如今的大数据逐渐发挥出了它的力量,并无形的改变着我们的生活.但大数据在不是从事技术开发的人来说没有很明显的感受,很多人对大数据的概念只是停留在每年网易云音乐对个人听歌的汇总上. ...
- javaWeb-SpringBoot微信调查问卷+问卷数据大屏项目
项目效果概览: 项目架构: 获取文件模板,前端就会展示问卷的列表,我们就可以选择选项,结果就会同步到我们的后端,通过后端把统计结果发生到前端,完成整个流程. git仓库地址: 目录标题 项目效果概览: ...
最新文章
- 共享经济时代,中小企业该如何逆风翻盘?
- Dataset之JFT:JFT/FastEval14k数据集的简介、下载、案例应用之详细攻略
- [组图]海报:计算机的爱
- 《系统集成项目管理工程师》必背100个知识点-90信息系统安全属性
- JavaFX图表(七)之散点图
- Groovy的基础语法
- 怎样让datalist的记录条滚动呢?_马自达阿特兹,这款车怎样?
- 基于JAVA+Spring+MYSQL的家教管理系统
- 老公想入手一块10万左右的手表有哪些推荐?
- ajax data传值
- [置顶] 【cocos2d-x入门实战】微信飞机大战之六:子弹层的处理
- pycharm的python解释器选择_pycharm中配置python解释器
- 复合线转权属线lisp_三权发证中使用MAPGIS CASS如何应用复合线 简单、快速生成集体土地所有权权属线 -...
- jeecg-boot自动生成代码_代码一键自动生成,拿走不谢
- 工程测量学学习 详细
- 计算机专业暑期三下乡活动方案,暑期三下乡活动方案
- readmemh函数引用的txt格式_[转载](zz)用于读取和写入文本文件Verilog代码
- 域名系统(DNS)说明
- SVN中tag和branch的区别
- 冲击GCT——考试法宝