首页 编程教程正文

【分享】python-横式,纵式条形图的实现

piaodoo 编程教程 2020-02-22 22:14:47 1235 0 python教程

本文来源吾爱破解论坛

本帖最后由 英雄无用武之地 于 2020-1-26 21:28 编辑

Python写的横式条形图的实现,纵式条形图的实现。供大家学习参考。

直接上代码:
1.横式条形图的实现:
[Python] 纯文本查看 复制代码

第一种:
chart = [['alibaba', 4580], ['amazon', 9628], ['apple', 11331], ['oracle', 2053]]
hchartall = 300  # 数据单位长度参数
mark = '$'  # 条形图填充字符为'$'
# mark=chr(0x25a0)                             # 条形图填充字符为方块
horiz = []  # 横式二维列表
for item in chart:  # 遍历列表,转换量化数据为二维列表
    hchartwid = int(item[1] / hchartall)  # 获得条形图量化数据
    horiz.append(item[0].ljust(8) +hchartwid * mark)  # 转换为二维列表
for item in horiz:                       # 遍历输出条形图
    print( '  \033[1;31;0m ' + item + '\033[0m')
for item in chart:                            # 遍历列表
    hchartwid = int(item[1] / hchartall)      # 获得条形图比较数据
    print( item[0].ljust(8) + '  \033[1;31;0m ' + hchartwid * mark + '\033[0m')

[Python] 纯文本查看 复制代码
第二种:
chart=[['alibaba',4580],['amazon',9628],['apple',11331],['oracle',2053]]   # 4大互联网公司市值信息
hchartall=300                                 # 数据单位长度参数
color= '41m '                                 # 条形图颜色参数
for item in chart:                           # 遍历列表
    hchartwid = int(item[1] / hchartall)      # 获得条形图量化数据
    print( item[0].ljust(8) + '  \033[1;32;' +color  + ''.ljust(hchartwid)+ '\033[0m')
    print('')                                 # 条形图之间实现间隔


2.纵式条形图的实现第一种:
[Python] 纯文本查看 复制代码
chart=[['alibaba',4580],['amazon',9628],['apple',11331],['oracle',2053]]
hchartall=900           # 条形图数据单位长度
mark=chr(0x25a0)        # 填充条形图的字符为方块
datazip=[]              # 量化后的比较数据
horiz=[]                # 横式列表矩阵
stri=''                 # 存储从横式列表矩阵临时提取的字符
vertical=[]             # 纵式列表矩阵
for item in chart:                           # 遍历4大互联网公司市值列表
    hchartwid = int(item[1] / hchartall)      # 按单位长度计算各公司条形图比较数据
    datazip.append(hchartwid)                 # 添加条形图数据到比较数据列表
maxdata=max(datazip)                          # 获取数据比较列表的最大值
for item in datazip:           # 遍历数据比较列表
   # 转换为1和0组成横式列表矩阵,列表前面的值为1(比较数据大小决定),后面补充0
    horiz.append('1' * int(item) + (maxdata-int(item))*'0')
for i in range(maxdata):         # 按数据比较列表的最大值转换纵式矩阵列表
    for item in horiz:           # 遍历横式矩阵列表
        stri=stri+item[maxdata-i-1]   # 提取每个列表的一个字符
    vertical.append(stri)         # 添加到纵式列表
    stri=''                       # 清空临时存储的横式数据
for item in vertical:            # 遍历纵式矩阵列表
    for i in item:               # 遍历其中的一个列表
        if i=='1':               # 如果列表元素为“1”
            print('  \033[31m'+mark *2+ '\033[0m',end=' ')   # 按输出字符
        else:                    # 如果列表元素为“0 ”
            print("      ",end=' ')    # 输出为空
    print()                            # 输出空列
print(chart[0][0],chart[1][0],chart[2][0],chart[3][0] )   # 添加公司名称信息


[Python] 纯文本查看 复制代码
第二种:
chart=[['alibaba',4580],['amazon',9628],['apple',11331],['oracle',2053]]
hchartall=900           # 条形图数据单位长度
mark=chr(0x25a0)        # 填充条形图的字符为方块
datazip=[]              # 量化后的比较数据
horiz=[]                # 横式列表矩阵
stri=''                 # 存储从横式列表矩阵临时提取的字符
vertical=[]             # 纵式列表矩阵
for item in chart:                           # 遍历4大互联网公司市值列表
    hchartwid = int(item[1] / hchartall)      # 按单位长度计算各公司条形图比较数据
    datazip.append(hchartwid)                 # 添加条形图数据到比较数据列表
maxdata=max(datazip)                          # 获取数据比较列表的最大值
for item in datazip:           # 遍历数据比较列表
   # 转换为1和0组成横式列表矩阵,列表前面的值为1(比较数据大小决定),后面补充0
    horiz.append('1' * int(item) + (maxdata-int(item))*'0')
for i in range(maxdata):         # 按数据比较列表的最大值转换纵式矩阵列表
    for item in horiz:           # 遍历横式矩阵列表
        stri=stri+item[maxdata-i-1]   # 提取每个列表的一个字符
    vertical.append(stri)         # 添加到纵式列表
    stri=''                       # 清空临时存储的横式数据
print('\33[35m',chart[0][1],' ',chart[1][1],' ',chart[2][1],' ',chart[3][1],'\33[0m')
for item in vertical:           # 遍历列表矩阵
    for i in item:              # 遍历其中一个列表
        if i=='1':              # 如果为“1”,输出背景色
            print('  \033[41m'+'   '+ '\033[0m',end='  ')
        else:                  # 如果为“0”,不输出内容
            print("     ",end='  ')
    print()                     # 输出间隔列
print(chart[0][0],chart[1][0],chart[2][0],chart[3][0] )  # 输出公司名称


代码可能没什么实际作用,只供学习参考。对有些人或许有作用~

大家来点热心和B吧!





版权声明:

本站所有资源均为站长或网友整理自互联网或站长购买自互联网,站长无法分辨资源版权出自何处,所以不承担任何版权以及其他问题带来的法律责任,如有侵权或者其他问题请联系站长删除!站长QQ754403226 谢谢。

有关影视版权:本站只供百度云网盘资源,版权均属于影片公司所有,请在下载后24小时删除,切勿用于商业用途。本站所有资源信息均从互联网搜索而来,本站不对显示的内容承担责任,如您认为本站页面信息侵犯了您的权益,请附上版权证明邮件告知【754403226@qq.com】,在收到邮件后72小时内删除。本文链接:https://www.piaodoo.com/7924.html

搜索