背景
今天介绍一个不使用 matplot,通过DebugInfo模块打印人口金字塔图的方法。
引入模块
pip install DebugInfo
打印人口金字塔图
下面的代码构建了两个人口数据(仅做功能演示,不承诺任何参考价值),男性人口和女性人口,然后将其分别整理成条形图,对齐后呈现为金字塔图形式,代码如下:
# -*- coding:UTF-8 -*-
# region 引入调试模块
import random
from DebugInfo.DebugInfo import *
# endregion
白板 = 调试模板()
白板.准备表格(对齐控制串='lrr') # 第一列 左对齐, 第二列 右对齐, 第三列 右对齐, 其它未设置列默认 左对齐
白板.表格列间距 = [2, 2, 0] # 第一个列间距为2, 第二个列间距为 2, 第三个列间距为 0, 其它未设置列间距默认为 2
# 假如你已经整理完成了数据,这里是样例数据
人口数量男 = {'0-4': random.randrange(400, 450),
'5-9': random.randrange(350, 400),
'10-14': random.randrange(320, 350),
'15-19': random.randrange(310, 320),
'20-24': random.randrange(300, 310),
'25-29': random.randrange(300, 305),
'30-34': random.randrange(290, 310),
'35-39': random.randrange(280, 300),
'40-44': random.randrange(270, 290),
'45-49': random.randrange(250, 270),
'50-54': random.randrange(230, 240),
'55-59': random.randrange(200, 220),
'60-64': random.randrange(170, 190),
'65-69': random.randrange(130, 150),
'70-74': random.randrange(100, 120),
'75-79': random.randrange(75, 90),
'80-84': random.randrange(45, 70),
'85-89': random.randrange(30, 50),
'90-94': random.randrange(20, 30),
'95-99': random.randrange(25, 28),
'100+': random.randrange(5, 15)}
人口数量女 = {'0-4': random.randrange(350, 380),
'5-9': random.randrange(330, 350),
'10-14': random.randrange(300, 330),
'15-19': random.randrange(290, 300),
'20-24': random.randrange(290, 300),
'25-29': random.randrange(280, 290),
'30-34': random.randrange(275, 280),
'35-39': random.randrange(270, 275),
'40-44': random.randrange(270, 290),
'45-49': random.randrange(250, 270),
'50-54': random.randrange(230, 250),
'55-59': random.randrange(200, 230),
'60-64': random.randrange(180, 200),
'65-69': random.randrange(150, 160),
'70-74': random.randrange(140, 150),
'75-79': random.randrange(120, 130),
'80-84': random.randrange(70, 80),
'85-89': random.randrange(50, 70),
'90-94': random.randrange(40, 50),
'95-99': random.randrange(35, 40),
'100+': random.randrange(25, 30)}
# 第一行作为标题
白板.添加一行('年龄', '数量/百万', '{}'.format(蓝字('人口男')), '{}'.format(洋红字('人口女')), '数量/百万', '备注').修饰行(青字)
人口数量最大值 = max(max(人口数量男.values()), max(人口数量女.values()))
# 把业务数据依次添加到表格中
for 年龄段 in 人口数量男.keys():
男生数量 = int(人口数量男[年龄段] * 50 / 人口数量最大值)
女生数量 = int(人口数量女[年龄段] * 50 / 人口数量最大值)
白板.添加一行(年龄段, 男生数量, '{}'.format(蓝字('▉' * 男生数量)), '{}'.format(洋红字('▉' * 女生数量)), 女生数量)
# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('人口金字塔分布图效果演示, 数量对齐').修饰方法(红字).展示()
白板.上下颠倒表格().展示表格()
以上代码运行效果如下:
人口数量跟随条形图
以上代码中,我们如果将人口数据分别符在男性人口和女性人口条形图的前后,可将人口跟随条形图显示,代码如下:
# -*- coding:UTF-8 -*-
# region 引入调试模块
import random
from DebugInfo.DebugInfo import *
# endregion
白板 = 调试模板()
白板.准备表格(对齐控制串='lr') # 第一列 左对齐,第二列 右对齐, 其它列默认左对齐
白板.表格列间距 = [2, 0] # 第一个列间距为 2, 第二个列间距为 0, 其它列间距默认为 2
# 假如你已经整理完成了数据,这里是样例数据
人口数量男 = {'0-4': random.randrange(400, 450),
'5-9': random.randrange(350, 400),
'10-14': random.randrange(320, 350),
'15-19': random.randrange(310, 320),
'20-24': random.randrange(300, 310),
'25-29': random.randrange(300, 305),
'30-34': random.randrange(290, 310),
'35-39': random.randrange(280, 300),
'40-44': random.randrange(270, 290),
'45-49': random.randrange(250, 270),
'50-54': random.randrange(230, 240),
'55-59': random.randrange(200, 220),
'60-64': random.randrange(170, 190),
'65-69': random.randrange(130, 150),
'70-74': random.randrange(100, 120),
'75-79': random.randrange(75, 90),
'80-84': random.randrange(45, 70),
'85-89': random.randrange(30, 50),
'90-94': random.randrange(20, 30),
'95-99': random.randrange(25, 28),
'100+': random.randrange(5, 15)}
人口数量女 = {'0-4': random.randrange(350, 380),
'5-9': random.randrange(330, 350),
'10-14': random.randrange(300, 330),
'15-19': random.randrange(290, 300),
'20-24': random.randrange(290, 300),
'25-29': random.randrange(280, 290),
'30-34': random.randrange(275, 280),
'35-39': random.randrange(270, 275),
'40-44': random.randrange(270, 290),
'45-49': random.randrange(250, 270),
'50-54': random.randrange(230, 250),
'55-59': random.randrange(200, 230),
'60-64': random.randrange(180, 200),
'65-69': random.randrange(150, 160),
'70-74': random.randrange(140, 150),
'75-79': random.randrange(120, 130),
'80-84': random.randrange(70, 80),
'85-89': random.randrange(50, 70),
'90-94': random.randrange(40, 50),
'95-99': random.randrange(35, 40),
'100+': random.randrange(25, 30)}
# 第一行作为标题
白板.添加一行('年龄', '{}'.format(蓝字('人口男/百万')), '{}'.format(洋红字('人口女/百万')), '备注').修饰行(青字)
人口数量最大值 = max(max(人口数量男.values()), max(人口数量女.values()))
# 把业务数据依次添加到表格中
for 年龄段 in 人口数量男.keys():
男生数量 = int(人口数量男[年龄段] * 50 / 人口数量最大值)
女生数量 = int(人口数量女[年龄段] * 50 / 人口数量最大值)
白板.添加一行(年龄段, '{} {}'.format(男生数量, 蓝字('▉' * 男生数量)), '{} {}'.format(洋红字('▉' * 女生数量), 女生数量))
# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('人口金字塔分布图效果演示, 数量跟随').修饰方法(红字).展示()
白板.上下颠倒表格().展示表格()
以上代码将人口数据与人口条形图组合在一起打印输出,效果如下:
小结
以上就是今天分享的使用DebugInfo模块输出人口金字塔图的使用方法了,希望可以帮到大家。