Matplotlib数据可视化分析的简单图形绘制

为了让数据更加直观,我们可以将数据可视化,下面是我们常用分析图的一些简单绘制方法

以下是一些学生数据:

import random
import matplotlib.pyplot as plt
# 学生数据
students = [
{'name': '张三', 'gender': 'male', 'age': 18, 'class': 'class1', 'chinese':
80, 'math': 90, 'english': 85},
{'name': '李四', 'gender': 'male', 'age': 16, 'class': 'class2', 'chinese':
70, 'math': 85, 'english': 80},
{'name': '王五', 'gender': 'female', 'age': 15, 'class': 'class3', 'chinese':
90, 'math': 95, 'english': 90},
{'name': '赵六', 'gender': 'female', 'age': 17, 'class': 'class4', 'chinese':
75, 'math': 80, 'english': 85},
{'name': '钱七', 'gender': 'male', 'age': 18, 'class': 'class1', 'chinese':
85, 'math': 90, 'english': 80},
{'name': '孙八', 'gender': 'male', 'age': 19, 'class': 'class2', 'chinese':
90, 'math': 95, 'english': 95},
{'name': '周九', 'gender': 'female', 'age': 18, 'class': 'class3', 'chinese':
80, 'math': 85, 'english': 80},
{'name': '吴十', 'gender': 'female', 'age': 17, 'class': 'class4', 'chinese':
70, 'math': 75, 'english': 70},
]

1.用饼图统计信息工程学院女生和男生的人数

#饼状图
plt.rcParams['font.sans-serif'] = ['Microsoft YaHei']
# 构造百分比数据和标签
male=0
female=0
for dic in students:
    if dic['gender']=='male':
        male+=1
    if dic['gender']=='female':
        female+=1
labels = ['男生','女生']
data = [male,female]
# 绘制饼图
plt.pie(x=data, labels=labels)
# 添加图标题
plt.title('男女占比分布图')
# 显示图形
plt.savefig("1.jpg")
plt.show()

请添加图片描述

2.用柱图分析语文成绩优、良、中、差的人数

#柱状图
# 设置中文和支持UTF8编码
plt.rcParams['font.sans-serif'] = ['SimHei']
# 字体大小
plt.rcParams['font.size'] = 10
# 用于解决绘图时出现负号“-”无法正常显示的问题。具体来说,该代码将参数unicode_minus设置为False,表示将使用Unicode字符来显示负号,以解决在某些操作系统或字体下负号显示为方块或其他字符的问题。该设置特别适用于中文环境,因为中文环境中常常使用到特殊字符和符号。
plt.rcParams['axes.unicode_minus'] = False
# 生成画布尺寸:20单位,8单位,dpi为单位分辨率
# figsize是Matplotlib库中figure()函数的一个参数,它控制了图形的大小,以元组形式指定,如(20,8)表示图形# 宽度为20英寸,高度为8英寸。如果没有指定,Matplotlib会使用默认值。
# dpi是图形分辨率,即每英寸点数(dots per inch),默认值为100。如果dpi为80
plt.figure(figsize=(20, 8), dpi=80)
# 横坐标
chinese = ['优', '良', '中', '差']
x = range(len(chinese))
# 纵坐标人数
you=0
liang=0
zhong=0
cha=0
for dic in students:
    if dic['chinese']>=90:
        you+=1
    if dic['chinese']>=80 and dic['chinese']<90:
        liang+=1
    if dic['chinese'] >= 70 and dic['chinese'] < 80:
        zhong += 1
    if dic['chinese'] >= 60 and dic['chinese'] < 70:
        cha += 1
y = [you,liang,zhong,cha]
# 绘图:x轴数,y轴数据,宽度,颜色
plt.bar(x, y, width=0.5, color=['b', 'r', 'g', 'y'])
# 设置x坐标名字
plt.xticks(x, chinese)
# rotation 文字显示旋转角度
# plt.xticks(x, movie_name, rotation=20)
# 保存图片
plt.savefig("2.jpg")
# 显示
plt.show()

请添加图片描述

3. 利用散点图分析语文和英语成绩的相关性

# 散点图
# 定义数据
x=[]
y=[]
for dic in students:
    x.append(dic['chinese'])
    y.append(dic['english'])

# 绘制散点图
plt.scatter(x, y)
# 显示
plt.savefig("3.jpg")
plt.show()

请添加图片描述

4.利用折线图分析学生年龄和数学平均成绩的走势图

dic_age_score={}
x=[]
y=[]
for dic in students:
    if dic_age_score.get(dic['age'],0)!=0:
        dic_age_score[dic['age']] = (dic_age_score[dic['age']]+dic['math'])/2
    else:
        dic_age_score[dic['age']]=dic['math']

sort_age_score = sorted(dic_age_score.items(),key=lambda items:items[0])

for dici in sort_age_score:
    x.append(dici[0])
    y.append(dici[1])
# 画折线图
# x和y是要绘制的数据点的横坐标和纵坐标的列表,函数会将这些点按照横坐标的顺序连成一条折线
plt.plot(x, y)
plt.savefig('4.jpg')
plt.show()

请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值