3000 字推荐一个可视化神器,50 行 Python 代码制作数据大屏
作者 | 俊欣
来源 | 关于数据分析与可视化
今天小编给大家分享一个制作数据大屏的工具,非常的好用,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()
: 代表的是输出文本
往
期
回
顾
技术
用技术实现时序羽毛球动作预测
资讯
体验在元宇宙豪宅里开party
资讯
苹果市值达3万亿美元,创历史新高
资讯
这个AI模型火上GitHub热榜
分享
点收藏
点点赞
点在看
相关文章:

使用Varnish+ESI实现静态页面的局部缓存
页面静态化是搭建高性能网站必用的招式之一,页面静态化可以有效提升系统响应速度,同时也有利于搜索引擎优化。但在页面静态化后,静态页面之间包含(例如所有的静态页面包含页头、页脚)以及静态页面中的局部信息的动态更…

The Apply method of function object
2019独角兽企业重金招聘Python工程师标准>>> http://webreference.com As explained in the previous page, JavaScript 1.3 includes two new methods for the Function object, call() andapply(). The apply() method is a variation on the call() method. The …

资源 | 100+个自然语言处理数据集大放送,再不愁找不到数据!
奉上100多个按字母顺序排列的开源自然语言处理文本数据集列表(原始未结构化的文本数据),快去按图索骥下载数据自己研究吧! 数据集 Apache软件基金会公开邮件档案:截止到2011年7月11日全部公开可用的Apache软件基金会邮…

Java中ArrayList源码分析
一、简介 ArrayList是一个数组队列,相当于动态数组。每个ArrayList实例都有自己的容量,该容量至少和所存储数据的个数一样大小,在每次添加数据时,它会使用ensureCapacity()保证容量能容纳所有数据。 1.1、ArrayList 的继承与实现接…

介绍三种绘制时间线图的方法
作者 |周萝卜来源 |萝卜大杂烩今天我们再来分享几种不同的制作方法,大家可以自行比较下各种方法的优劣。Matplotlib 制作Matplotlib 作为 Python 家族最为重要的可视化工具,其基本的 API 以及绘制流程还是需要掌握的。尤其是该库的灵活程度以及作为众多工…

phpize是什么
安装php(fastcgi模式)的时候,常常有这样一句命令:/usr/local/webserver/php/bin/phpize 一、phpize是干嘛的? phpize是什么东西呢?php官方的说明: http://php.net/manual/en/install.pecl.phpiz…

C语言比较好的风格梳理
errno int err;tb malloc(sizeof(struct xtracer_table));if (!tb) {err errno;fprintf(stderr, "%s:%d, errno:%d, %s\n",__func__, __LINE__, err, strerror(err));return NULL;} 转载于:https://www.cnblogs.com/muahao/p/8979144.html

Linux下Memcache服务器端的安装
Linux下Memcache服务器端的安装服务器端主要是安装memcache服务器端,目前的最新版本是 memcached-1.3.0 。下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz http://memcached.googlecode.com/files/memcached-1.4.9.tar.gz 另外&#…

如何用技术恢复模糊的图像?在线教学…
作者 |小白 来源 |小白学视觉 有人认为恢复模糊的图像是不可能的,因为会丢失信息。但我对这个问题进行了很多思考,并认为如果输出图像的大小与输入图像的大小相同,那实际上是可能的!这样,输出就有足够的像素/信息来恢复…

数据库创建索引的原则
数据库建立索引的原则 铁律一:天下没有免费的午餐,使用索引是需要付出代价的 索引的优点有目共睹,但是,却很少有人关心过采用索引所需要付出的成本。若数据库管理员能够对索引所需要付出的代价有一个充分的认识,也就不…

Linux上实现ssh免密码登陆远程服务器
平常使用ssh登陆远程服务器时,都需要使用输入密码,希望可以实现通过密钥登陆而免除输入密码,从而可以为以后实现批量自动部署主机做好准备。 环境如下: IP地址操作系统服务器端10.0.0.10CentOS 6.5 x86客户端10.0.0.61CentOS 6.5 …

分享memcache和memcached安装过程
Memcache是什么? Memcache是一个自由和开放源代码、高性能、分配的内存对象缓存系统。用于加速动态web应用程序,减轻数据库负载。 它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一…

导入导出Android手机文件
1、获得root权限:adb root; 如提示adbd cannot run as root in production builds,参见我的另一篇文章:http://www.cnblogs.com/hdk1993/p/4770388.html 2、设置/system为可读写:adb remount; 3、将文件复制…

GPT-3 不够 Open,BigScience 构建开放语言模型,规模小 16 倍
编译 | 禾木木 出品 | AI科技大本营(ID:rgznai100) 大约一年前,总部位于纽约布鲁克林的自然语言处理初创公司 Hugging Face 推出了 BigScience。这是一个拥有 900 多名研究人员的国际项目,旨在更好地理解自然语言模型原理和提高大…

华为云微服务引擎CSE大量新特性上线,诚邀您免费体验
1、提供GO语言微服务开发框架SDK 支持插件化注册中心、多RPC协议(已默认实现http和highway,可扩展) 提供熔断降级、容错、路由管理、限流、错误注入、灰度发布等治理能力 2、提供Service Mesh商业版 支持.NET、Node.js、PHP等多语言应用…

memcache和memcached安装
首先要明确 memcache不是memcached第一步安装libevent #wget https://github.com/downloads/libevent/libevent/libevent-2.0.15-stable.tar.gz #tar libevent-2.0.15-stable.tar.gz #tar xzvf libevent-2.0.15-stable.tar.gz #cd libevent-2.0.15-stable #./configure --h…

点击按钮下载文件
RequestMapping("/download.do")public void download(HttpServletRequest request,HttpServletResponse response)throws Exception {String filePath "文件路径";FileInputStream fis null;OutputStream os null;try {fis new FileInputStream(fileP…

开源社区的危机:拒绝被“白嫖”?2大著名项目遭作者破坏
作者 | 林檎来源 | 数据实战派近日,一位开源开发者的故意破坏,再次引发了机构依赖开源库的争议。这一类开源库往往由维护者义务工作而支撑。被破坏的开源库是 Marak Squires 开发的 color.js 库和 faker.js 库。这两个库被广泛使用,其中不乏企…
状态和面向对象编程——1.定位步骤
定位 所有无人驾驶车要安全畅游全球,都必须经过一系列相同的步骤。 你一直在学习第一步:定位。在车辆能够安全驾驶之前,它们首先要使用传感器和收集的其他数据对它们所处的位置做出最佳估计。 卡尔曼滤波器 让我们来回顾一下卡尔曼滤波器对汽…

ldconfig命令详解,linux动态链接库
动态链接库管理命令 为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfig.此执行程序存放在/sbin目录下. ldconfig命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态链接库(格式如前介绍…

用于自动驾驶的实时 YUV 多任务 CNN
作者 | AI 修炼之路来源 | AI 修炼之路摘要本文提出了一种针对低功耗车用SoC优化的多任务卷积神经网络(CNN)结构。我们介绍了一个基于统一架构的网络,其中编码器由检测和分割两个任务共享。该网络以25FPS运行,分辨率为1280800。简要讨论了直接利用原生YU…

博客5:文件,目录以及用户的权限管理
linux用户与组的相关内容简介: 1.Linux用户:Username/UID管理员:root,0普通用户:1-65535系统用户:1-499(在centos7上为1-999)作用:对守护进程获取资源进行权限分配登录…

以太坊代币空投合约的实现
2019独角兽企业重金招聘Python工程师标准>>> 本文将介绍如何在以太坊智能合约中实现代币的空投。区块链以太坊世界中所谓空投(airdrop),就是免费给你的区块链地址(公钥)发送代币。 代币空投的方式层出不穷&…

linux命令:ln 使用方法
命令:ln 使用方法指令名称 : ln使用权限 : 所有使用者使用方式 : ln [options] source dist,其中 option 的格式为 :[-bdfinsvF] [-S backup-suffix] [-V {numbered, existing, simple}][--help] [--version] [--] 说明 : Linux/Unix 档案系统中…

10 个案例分享几个 Python 可视化小技巧,助你绘制高质量图表
作者 | 俊欣来源 | 关于数据分析与可视化一般在Python当中,我们用于绘制图表的模块最基础的可能就是matplotlib了,今天小编分享几个用该模块进行可视化制作的技巧,帮助你绘制出更加高质量的图表。同时本篇文章的第二部分是用Python来制作可视…

(转) 地区赛获胜策略,赛前默念!
1. 比赛中评测会有些慢,偶尔还会碰到隔10分钟以上才返回结果的情况,这段时间不能等结果,必须开工其他题,如果WA,两道题同时做。交完每道题都要先打印。2. 比赛时发的饭不是让你当时就吃的,那是给你赛后吃的…

USG防火墙telnet实验
实验使用USG5500防火墙 ,<SRG>system-view [SRG]interface g0/0/0 [SRG-GigabitEthernet0/0/0]ip address 192.168.1.1 24 接口配置地址[SRG-GigabitEthernet0/0/0]display this(显示当前配置) [SRG-G…

如何营造专属你的企业技术影响力氛围感?我不允许你还不知道
CSDN 推出《开发者研究与洞察》服务。基于3200万开发者的资源,从开发者视角出发,聚焦开发者“关注”、“使用”、“体验”三方面,帮助技术推广者打造技术品牌、优化技术产品的市场投放策略、提升技术产品的开发者使用体验,直接聆听…

php报错Permission denied
去apache的log下看error_log文件 #cd /usr/local/apache2/logs/ (13)Permission denied: exec of ....index.php failed加权限就可以 #chmod x index.php路径

Spring笔记——8.基于XML Schema的简化配置
我们可以使用XML Schema的配置方式来简化xml文件的配置。p:简化设值注入p:与property子元素作用相同,用于设值注入。若想使用p,则xml文件中需要引入对p的说明,一般自动生成的xml都会自带。xmlns:p"http://www.spr…