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模块输出条形堆积图的使用方法了,希望可以帮到大家。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server、MySQL和Oracle数据库分页查询的区别与联系

摘要:本文将通过一个现实例子,详细解释SQL Server、MySQL和Oracle这三种常见关系型数据库在分页查询方面的区别与联系。我们将提供具体场景下的SQL语句示例,并解释每个数据库的分页查询用法以及优化方法,帮助读者更好地选择适合自…

Apache JMeter

下载 Apache JMeter 并安装 java链接 打开 apache-jmeter-5.4.1\bin 找到jmeter.bat 双击打开 或者 ApacheJMeter.jar 双击打开 设置中文 找到 options 》choose Language 》chinese 新建 计划 创建线程组 添加Http请求 配置元件添加请求头参数(content-type&…

什么是PPS和TOD时序?授时防护设备是什么?

介绍 PPS和TOD PPS和TOD是两种用于精确时间同步的技术,它们在许多领域都有广泛的应用,总的来说,PPS和TOD被广泛应用于各种需要高度精确时间同步的领域,包括通信、测量、测试、系统集成和计算机网络等。 一、PPS PPS&#xff08…

RedisDesktopManager 连接redis

redis查看是否启动成功 ps -ef | grep redis以上未启动成功 cd /usr/local/bin/ 切换根目录 sudo -i 开启服务端 ./redis-server /usr/local/redis/redis.conf 开启客户端 ./redis-cli

Java【SpringBoot】SpringBoot 和 Spring 有什么区别? SpringBoot有哪些优点?

文章目录 前言一、Spring 特点二、SpringBoot 特点和优点总结 前言 各位读者好, 我是小陈, 这是我的个人主页, 希望我的专栏能够帮助到你: 📕 JavaSE基础: 基础语法, 类和对象, 封装继承多态, 接口, 综合小练习图书管理系统等 📗 Java数据结构: 顺序表, …

ElasticSearch学习2

1、索引的操作 1、创建索引 对ES的操作其实就是发送一个restful请求,kibana中在DevTools中进行ES操作 创建索引时需要注意ES的版本,不同版本的ES创建索引的语句略有差别,会导致失败 如下创建一个名为people的索引,settings&…

Java智慧工地系统源码(微服务+Java+Springcloud+Vue+MySQL)

智慧工地系统是依托物联网、互联网、AI、可视化建立的大数据管理平台,是一种全新的管理模式,能够实现劳务管理、安全施工、绿色施工的智能化和互联网化。围绕施工现场管理的人、机、料、法、环五大维度,以及施工过程管理的进度、质量、安全三…

cdh6.3.2 Flink On Yarn taskmanager任务分配倾斜问题的解决办法

业务场景: Flink On Yarn任务启动 组件版本: CDH:6.3.2 Flink:1.13.2 Hadoop:3.0.0 问题描述: 在使用FLink on Yarn调度过程中,发现taskmanager总是分配在集中的几个节点上,集群…

记一次从Redis弱口令到RCE

Fscan扫描网段发现了一些开启了6379的服务器,逐个尝试了下未授权,然后尝试了下爆破 hydra爆破redis hydra -P [字典目录] redis://xxx.xxx.xxx.xxx结果还真让爆出来一个 得到密码后,连接上去,这里用的是Another Redis Desktop M…

飞机打方块(四)游戏结束

一、游戏结束显示 1.新建节点 1.新建gameover节点 2.绑定canvas 3.新建gameover容器 4.新建文本节点 2.游戏结束逻辑 Barrier.ts update(dt: number) {//将自身生命值取整let num Math.floor(this.num);//在Label上显示this.num_lb.string num.toString();//获取GameCo…

分布式 - 消息队列Kafka:Kafka 消费者消费位移的提交方式

文章目录 1. 自动提交消费位移2. 自动提交消费位移存在的问题?3. 手动提交消费位移1. 同步提交消费位移2. 异步提交消费位移3. 同步和异步组合提交消费位移4. 提交特定的消费位移5. 按分区提交消费位移 4. 消费者查找不到消费位移时怎么办?5. 如何从特定…

基于springboot+vue的食材商城(前后端分离)

博主主页:猫头鹰源码 博主简介:Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容:毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目介绍…

Dockerfile快速搭建自己专属的LAMP环境

目录 编写Dockerfile 1.文件内容需求: 2.值得注意的是centos6官方源已下线,所以需要切换centos-vault源! 3.Dockerfile内容 4.进入到 lamp 开始构建镜像 推送镜像到私有仓库 1.创建用户并添加到私有仓库:​编辑​编辑 2.推…

Android2:构建交互式应用

一。创建项目 项目名Beer Adviser 二。更新布局 activity_main.xml <?xml version"1.0" encoding"utf-8"?><LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"…

计算机网络第2章(物理层)

计算机网络第2章&#xff08;物理层&#xff09; 2.1 物理层的基本概念2.2 物理层下面的传输媒体2.2.1 导引型传输媒体2.2.2 非导引型传输媒体 2.3 传输方式2.3.1 串行传输和并行传输2.3.2 同步传输和异步传输2.3.3 单向通信&#xff08;单工&#xff09;、双向交替通信&#x…

[ubuntu]ubuntu安装vncserver后,windows连接灰屏解决方法

修改配置文件~/.vnc/xstartup为如下内容&#xff1a; #!/bin/bash export $(dbus-launch) export XKL_XMODMAP_DISABLE1 unset SESSION_MANAGERgnome-panel & gnome-settings-daemon & metacity & nautilus & gnome-terminal &# [ -x /etc/vnc/xstartup…

并查集 size 的优化(并查集 size 的优化)

目录 并查集 size 的优化 Java 实例代码 UnionFind3.java 文件代码&#xff1a; 并查集 size 的优化 按照上一小节的思路&#xff0c;我们把如下图所示的并查集&#xff0c;进行 union(4,9) 操作。 合并操作后的结构为&#xff1a; 可以发现&#xff0c;这个结构的树的层相对…

定向流量卡怎么没人买了呢?你知道定向流量卡有多坑吗?

在购买流量卡的时候大家可能都注意了&#xff0c;市面上的流量卡有三种&#xff0c;定向流量卡&#xff0c;通用流量卡&#xff0c;通用流量定向流量卡&#xff0c;据小编了解&#xff0c;现在越来越多的人比较喜欢购买后两者&#xff0c;而关注定向流量卡越来越少了。 其实用过…

桌面软件开发框架 Electron、Qt、WPF 和 WinForms 怎么选?

一、Electron Electron 是一个基于 Web 技术的跨平台桌面应用程序开发框架。它使用 HTML、CSS 和 JavaScript 来构建应用程序界面,并借助 Chromium 渲染引擎提供强大的页面渲染能力。Electron 的主要特点包括: 跨平台:Electron 可以在 Windows、macOS 和 Linux 等多个主流操…

三菱PLC与变频器之间无线通讯

在工业现场由PLC远程控制变频器的应用非常常见&#xff0c;如果挖沟布线不便或者变频器在移动设备上&#xff0c;那么采用无线通讯就是最佳方案。 这里我们选用最常用的三菱 FX2N PLC和三菱变频器为例&#xff0c;并结合日系plc专用无线通讯终端DTD435M来说明PLC与变频器之间的…