背景
今天介绍一个不使用 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%,对两个团队的数据进行归一化处理后,打印成条形堆积图输出,效果如下:
转化率值跟随条形图显示
以上代码中,我们如果将转化率值组合在 ▉ 符号后面,则可以将转化率值跟随条形图打印,代码如下:
# -*- 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队))))
# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('条形堆积图效果演示, 转化率对齐').修饰方法(红字).展示()
白板.展示表格()
代码输出效果如下:
转化率分别对齐各自条形图
以上代码中,我们稍加调整,即可将转化率分别对齐到各自团队的条形图位置,代码如下:
# -*- 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模块输出条形堆积图的使用方法了,希望可以帮到大家。