利用python matplotlib plt画茎叶图

利用python matplotlib plt画茎叶图

数理统计老师布置了一个画茎叶图的作业,不太喜欢用excel做,就试着用python写了一个小程序来实现:

from matplotlib import pyplot as plt
def read_data():
    data = []
    lis1=[]#用来储存茎
    lis2=[]#用来储存叶
    with open('D:\python代码\小项目\智力问答测试\作业2(1).txt') as f:			# 记得修改文件路径
        for row in f:
            data.append(int(row))
    data.sort()
    for i in data:
        if i//10  not in lis1:
            lis1.append(i//10)
    lis1.sort()
    for i in lis1:
        lis_temp=[]#存储每个茎的叶
        for j in data:
            if j//10==i:
                lis_temp.append(j%i)
            if j%10>i:
                break
        lis2.append(lis_temp)
    print(lis1,lis2)
    return lis1,lis2

def draw_pic(lis1,lis2):
    plt.rcParams['font.sans-serif'] = ['SimHei']  # 解决中文无法显示的问题
    plt.rcParams['axes.unicode_minus'] = False  # 用来正常显示负号
    plt.figure(figsize=(10,4))#单位是英寸
    plt.plot([2,2],[1,len(lis1)+0.5])
    plt.xlim((1.9,3.5))
    plt.axis('off')  # 去除坐标轴
    # plt.text(1.9,1,'nihao',fontsize=20)
    #输出茎
    for i in range(len(lis1)):
        plt.text(1.9,len(lis1)-i,str(lis1[i]),fontsize=12)
    plt.text(1.9,len(lis1)+1,'茎',fontsize=15)
    #输出叶
    for j in range(len(lis2)):
        plt.text(2.1,len(lis2)-j,','.join(map(str,lis2[j])),fontsize=12)
    plt.text(2.1, len(lis1) + 1, '叶', fontsize=15)
    plt.show()

if __name__ == '__main__':
    lis1,lis2= read_data()
    draw_pic(lis1,lis2)

实现效果如图所示,还行。
在这里插入图片描述

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值