python 打印人口分布金字塔图

背景

今天介绍一个不使用 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(洋红字('▉' * 女生数量)), 女生数量)

# 展示你的表格
白板.分隔线.总长度(白板.表格宽度()).提示内容('人口金字塔分布图效果演示, 数量对齐').修饰方法(红字).展示()
白板.上下颠倒表格().展示表格()

以上代码运行效果如下:
DebugInfo 模块打印人口金字塔图效果 人口数量两边对齐显示

人口数量跟随条形图

以上代码中,我们如果将人口数据分别符在男性人口和女性人口条形图的前后,可将人口跟随条形图显示,代码如下:

# -*- 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 模块打印人口金字塔图效果 人口数量跟随条形图显示

小结

以上就是今天分享的使用DebugInfo模块输出人口金字塔图的使用方法了,希望可以帮到大家。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

团圆吧

1 分钱,求鼓励。

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值