python 打印一个条形堆积图

背景

今天介绍一个不使用 matplot,通过 DebugInfo模块打印条形堆积图 的方法。

引入模块

pip install DebugInfo

打印销售转化数据

下面的代码构建了两个销售团队,团队A 和团队B;两个团队的销售数据构成了公司总的销售成果。以条形堆积图的方式展示两个销售团队的成果。

# -*- coding:UTF-8 -*-

# region 引入调试模块
import random
from DebugInfo.DebugInfo import *

# endregion

白板 = 调试模板()
白板.准备表格()

# 假如你已经整理完成了数据,这里是样例数据
销售转化数据A队 = {'广告曝光': random.randrange(94, 98),
            '链接跳转': random.randrange(80, 90),
            '加购物车': random.randrange(75, 80),
            '生成订单': random.randrange(65, 74),
            '提交支付': random.randrange(40, 60),
            '完成支付': random.randrange(25, 40),
            '售后退款': random.randrange(1, 5)}

销售转化数据B队 = {'广告曝光': random.randrange(94, 98),
            '链接跳转': random.randrange(80, 90),
            '加购物车': random.randrange(75, 80),
            '生成订单': random.randrange(65, 74),
            '提交支付': random.randrange(40, 60),
            '完成支付': random.randrange(25, 40),
            '售后退款': random.randrange(1, 5)}

# 第一行作为标题
白板.添加一行('节点', '进度[{}/{}]'.format(红字('A队'), 绿字('B队')), '转化率[{}/{}]'.format(红字('A队'), 绿字('B队')), '备注').修饰行(青字)

# 第二行第二列打印 100 个 - 作为 100% 参考线
白板.添加一行('', '{}'.format(白板.分隔线.总长度(100).提示内容('100%参考线').修饰方法(黄字)))

# 把业务数据依次添加到表格中
for 节点 in 销售转化数据A队.keys():
    转化率A队 = int(销售转化数据A队[节点] * 0.5)
    转化率B队 = int(销售转化数据B队[节点] * 0.5)

    白板.添加一行(节点,
            '{}{}'.format(红字('▉' * 转化率A队), 绿字('▉' * 转化率B队)),
            '{}/{}'.format(红字('{}%'.format(转化率A队)), 绿字('{}%'.format(转化率B队))))

# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('条形堆积图效果演示, 转化率对齐').修饰方法(红字).展示()
白板.展示表格()

以上代码中,我们假设两个销售团队的成果在整体团队中的占比各 50%,对两个团队的数据进行归一化处理后,打印成条形堆积图输出,效果如下:DebugInfo 打印条形堆积图效果 转化率对齐显示

转化率值跟随条形图显示

以上代码中,我们如果将转化率值组合在 ▉ 符号后面,则可以将转化率值跟随条形图打印,代码如下:

# -*- coding:UTF-8 -*-

# region 引入调试模块
import random
from DebugInfo.DebugInfo import *

# endregion

白板 = 调试模板()
白板.准备表格()

# 假如你已经整理完成了数据,这里是样例数据
销售转化数据A队 = {'广告曝光': random.randrange(94, 98),
            '链接跳转': random.randrange(80, 90),
            '加购物车': random.randrange(75, 80),
            '生成订单': random.randrange(65, 74),
            '提交支付': random.randrange(40, 60),
            '完成支付': random.randrange(25, 40),
            '售后退款': random.randrange(1, 5)}

销售转化数据B队 = {'广告曝光': random.randrange(94, 98),
            '链接跳转': random.randrange(80, 90),
            '加购物车': random.randrange(75, 80),
            '生成订单': random.randrange(65, 74),
            '提交支付': random.randrange(40, 60),
            '完成支付': random.randrange(25, 40),
            '售后退款': random.randrange(1, 5)}

# 第一行作为标题
白板.添加一行('节点', '进度/转化率[{}{}]'.format(红字('A队'), 绿字('B队')), '备注').修饰行(青字)

# 第二行第二列打印 100 个 - 作为 100% 参考线
白板.添加一行('', '{}{}/{}'.format(白板.分隔线.总长度(100).提示内容('100%参考线').修饰方法(黄字), 红字('xxx%'), 绿字('xxx%')))

# 把业务数据依次添加到表格中
for 节点 in 销售转化数据A队.keys():
    转化率A队 = int(销售转化数据A队[节点] * 0.5)
    转化率B队 = int(销售转化数据B队[节点] * 0.5)

    白板.添加一行(节点,
            '{}{}'.format(红字('▉' * 转化率A队), 绿字('▉' * 转化率B队)) + ' ' +
            '{}/{}'.format(红字('{}%'.format(转化率A队)), 绿字('{}%'.format(转化率B队))))

# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('条形堆积图效果演示, 转化率对齐').修饰方法(红字).展示()
白板.展示表格()

代码输出效果如下:DebugInfo 打印条形堆积图效果 转化率跟随在条形图后

转化率分别对齐各自条形图

以上代码中,我们稍加调整,即可将转化率分别对齐到各自团队的条形图位置,代码如下:

# -*- coding:UTF-8 -*-

# region 引入调试模块
import random
from DebugInfo.DebugInfo import *

# endregion

白板 = 调试模板()
白板.准备表格()

# 假如你已经整理完成了数据,这里是样例数据
销售转化数据A队 = {'广告曝光': random.randrange(94, 98),
            '链接跳转': random.randrange(80, 90),
            '加购物车': random.randrange(75, 80),
            '生成订单': random.randrange(65, 74),
            '提交支付': random.randrange(40, 60),
            '完成支付': random.randrange(25, 40),
            '售后退款': random.randrange(1, 5)}

销售转化数据B队 = {'广告曝光': random.randrange(94, 98),
            '链接跳转': random.randrange(80, 90),
            '加购物车': random.randrange(75, 80),
            '生成订单': random.randrange(65, 74),
            '提交支付': random.randrange(40, 60),
            '完成支付': random.randrange(25, 40),
            '售后退款': random.randrange(1, 5)}

# 第一行作为标题
白板.添加一行('节点', '进度/转化率[{}{}]'.format(红字('A队'), 绿字('B队')), '备注').修饰行(青字)

# 第二行第二列打印 100 个 - 作为 100% 参考线
白板.添加一行('', '{} {}'.format(白板.分隔线.总长度(100).提示内容('100%参考线').修饰方法(黄字), 'xxx%'))

# 把业务数据依次添加到表格中
for 节点 in 销售转化数据A队.keys():
    转化率A队 = int(销售转化数据A队[节点] * 0.5)
    转化率B队 = int(销售转化数据B队[节点] * 0.5)

    转化率字符 = '|{}{}'.format(' ' * (转化率A队 - 1), 红字('{}%'.format(转化率A队)))
    转化率字符 = '{}{}{}'.format(转化率字符, ' ' * (转化率B队 - (显示宽度(转化率字符) - 转化率A队)), 绿字('{}%'.format(转化率B队)))

    白板.添加一行(节点, '{}\n{}{}'.format(转化率字符, 红字('▉' * 转化率A队), 绿字('▉' * 转化率B队)))

# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('条形堆积图效果演示, 转化率对齐').修饰方法(红字).展示()
白板.展示表格()

以上代码中,我们将各团队的转化率数据在单独的行中,对齐各自团队的条形图位置进行显示,效果如下:
DebugInfo 打印条形堆积图效果 转化率对齐在条形图位置

小结

以上就是今天分享的使用DebugInfo模块输出条形堆积图的使用方法了,希望可以帮到大家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/84265.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

bug记录:微信小程序 给button使用all: initial重置样式

场景:通过uniapp开发微信小程序 ,使用uview的u-popup弹窗,里面内嵌了一个原生button标签,因为微信小程序的button是有默认样式的,所以通过all: initial重置样式 。但是整个弹窗的点击事件都会被button上面的点击事件覆…

node没有自动安装npm时,如何手动安装 npm

之前写过一篇使用 nvm 管理 node 版本的文章,node版本管理(Windows) 有时候,我们使用 nvm 下载 node 时,node 没有自动下载 npm ,此时就需要我们自己手动下载 npm 1、下载 npm下载地址:&…

java请求SAP系统,发起soap的xml报文,实体类转换,idea自动生成教程

1、将接口的网页地址,右键保存,然后修改文件后缀为wsdl文件 2、idea全局搜索 wsdl,找到自动转换javabean插件: 3、点击后,选择下载改完后缀的文件(选择): 4、将无用的class文件删除掉 5、请求sap的地址为…

嵌入式蓝海变红海?其实是大浪淘沙!

嵌入式是当下热门的职业方向之一,吸引了众多求职者的目光。然而,有人担心大家一拥而上,导致嵌入式就业竞争激烈,找工作难度大。其实,嵌入式行业的竞争并非无法逾越的天堑,也远远没有从蓝海变成红海&#xf…

【Redis从头学-7】Redis中的Set数据类型实战场景之用户画像去重、共同关注、专属粉丝

🧑‍💻作者名称:DaenCode 🎤作者简介:啥技术都喜欢捣鼓捣鼓,喜欢分享技术、经验、生活。 😎人生感悟:尝尽人生百味,方知世间冷暖。 📖所属专栏:Re…

春秋云镜 CVE-2019-2725

春秋云镜 CVE-2019-2725 Weblogic < 10.3.6 ‘wls-wsat’ XMLDecoder 反序列化漏洞 靶标介绍 Oracle Fusion Middleware&#xff08;子组件&#xff1a;Web Services&#xff09;的 Oracle WebLogic Server 组件中的漏洞。受影响的受支持版本为 10.3.6.0.0 和 12.1.3.0.0。…

Python爬虫实战案例——第一例

X卢小说登录(包括验证码处理) 地址&#xff1a;aHR0cHM6Ly91LmZhbG9vLmNvbS9yZWdpc3QvbG9naW4uYXNweA 打开页面直接进行分析 任意输入用户名密码及验证码之后可以看到抓到的包中传输的数据明显需要的是txtPwd进行加密分析。按ctrlshiftf进行搜索。 定位来到源代码中断点进行调…

python 开发环境(PyCharm)搭建指南

Python 的下载并安装 参考&#xff1a;Python基础教程——搭建Python编程环境 下载 Python Python 下载地址&#xff1a;官网 &#xff08;1&#xff09;点击【Downloads】>>>点击【Windows】>>>点击【Python 3.x.x】下载最新版 Python&#xff1b; Pyt…

resource doesn‘t have a corresponding Go package.

resource doesnt have a corresponding Go package. GO这个鬼东西不能直接放src下。 ************ Building Go project: ProjectGoTest ************with GOPATH: D:\Go;D:\eclipse-jee-oxygen-2-win32-x86_64\workspace\ProjectGoTest >> Running: D:\Go\bin\go.exe …

SNAT和DNAT

SNAT和DNAT 一、SNAT策略及应用1.1SNAT策略概述1.2开启SNAT的命令1.2.1 临时打开1.2.2永久打开 1.3SNAT转换1&#xff1a;固定的公网IP地址1.4SNAT转换2&#xff1a;非固定的公网IP地址&#xff08;共享动态IP地址&#xff09;1.5SNAT案例1.5.1实验准备1.5.2配置网关服务器&…

(数字图像处理MATLAB+Python)第十章图像分割-第三,四节:区域分割和基于聚类的图像分割

文章目录 一&#xff1a;区域分割&#xff08;1&#xff09;区域生长A&#xff1a;原理B&#xff1a;示例C&#xff1a;程序 &#xff08;2&#xff09;区域合并A&#xff1a;原理B&#xff1a;示例C&#xff1a;程序 &#xff08;3&#xff09;区域分裂A&#xff1a;原理B&…

二叉树的遍历

二叉树的遍历 关于二叉树的遍历方式&#xff0c;要知道二叉树遍历的基本方式都有哪些。二叉树主要有两种遍历方式&#xff1a; 深度优先遍历&#xff1a;先往深走&#xff0c;遇到叶子节点再往回走。 前序遍历&#xff08;递归法&#xff0c;迭代法&#xff09;中序遍历&#…

tailscale使用教程(远程连接服务器)

tailscale&#xff1a;将多个设备放在同一局域网下&#xff0c;实现异地组网。 首先进入tailscale官网&#xff0c;根据系统需求进行下载 需要远程的设备和被远程的设备都需要下载。 然后两个设备均登录同一账号即可 注&#xff1a;这里重点讲一下linux操作系统上的操作&…

【3Ds Max】布料命令的简单使用

简介 在3ds Max中&#xff0c;"布料"&#xff08;Cloth&#xff09;是一种模拟技术&#xff0c;用于模拟物体的布料、织物或软体的行为&#xff0c;例如衣物、帆布等。通过应用布料模拟&#xff0c;您可以模拟出物体在重力、碰撞和其他外力作用下的变形和动态效果。…

Zookeeper集群单节点启动成功但未同步其他节点数据

首先排查节点启动是否正常&#xff1a; 在zookeeper的bin目录下执行&#xff1a;sh zkServer.sh status 判断当前节点数据leader 还是follower 节点都启动正常&#xff0c;但某一个zookeeper集群节点&#xff08;下面简称“异常节点”&#xff09;不同步其他节点数据&#xf…

7. CSS(四)

目录 一、浮动 &#xff08;一&#xff09;传统网页布局的三种方式 &#xff08;二&#xff09;标准流&#xff08;普通流/文档流&#xff09; &#xff08;三&#xff09;为什么需要浮动&#xff1f; &#xff08;四&#xff09;什么是浮动 &#xff08;五&#xff09;浮…

CTFhub-sql-整数注入

常用函数&#xff1a;version()、database()、user() 判断存在 sqli 注入 1 1 and 11 1 and 12 因为 11 为真&#xff0c;12 为假&#xff0c;且 11 与 1 显示的数据一样&#xff0c;那么就存在 sqli 注入 查询该数据表的字段数量 一、 2 3 1,2成功带出数据&#xff0c;3没…

Hadoop分布式计算与资源调度:打开专业江湖的魔幻之门

文章目录 版权声明一 分布式计算概述1.1 分布式计算1.2 分布式&#xff08;数据&#xff09;计算模式1.3 小结 二 MapReduce概述2.1 分布式计算框架 - MapReduce2.2 MapReduce执行原理2.3 小结 三 YARN概述3.1 YARN & MapReduce3.2 资源调度3.3 程序的资源调度3.4 YARN的资…

图像分割unet系列------TransUnet详解

图像分割unet系列------TransUnet详解 1、TransUnet结构2、我关心的问题3、总结与展望TransUnet发表于2021年,它是对UNet非常重要的改进,专为医学图像分割任务设计,特别用于在医学图像中分割器官或病变等解剖结构。 1、TransUnet结构 TransUNet在U-Net模型的基础上引入了混合…

【Matter】基于Ubuntu 22.04搭建matter开发环境:chip-tool 配网之 matter-over-wifi

前言 主要是记录一下学习过程&#xff0c;梳理下思路&#xff0c;抛转~ 官方的开发环境&#xff0c;基于Linux版本&#xff0c;官方的环境是基于树莓派环境的&#xff0c;原理其实也比较明了&#xff0c;目的也比较明确&#xff0c;就是达到Linux 主机和wifi 路由在同一局域网…