02 matplotlib - 柱状图、直方图、散点图 、饼图

本文深入讲解了使用Python的Matplotlib库进行数据可视化的方法,包括柱状图、直方图、散点图和饼图的绘制技巧。通过实例展示了如何设置坐标轴参数、调整图像样式,以及如何解读不同类型的图表。

=== 头文件 ===

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 解决中文显示问题
import matplotlib as mpl
mpl.rcParams['font.sans-serif'] = ['SimHei']
mpl.rcParams['axes.unicode_minus'] = False
# inline 在行内显示
%matplotlib inline 

=== 柱状图 ===

1、创建数据
2、设置坐标轴中文参数,代替数字 plt.xticks(num,stu)
3、设置每组柱状图的个数(有几个轴)
4、设置刻度 plt.ylim(0,100) 0~100分 plt.xlim(0,7) 6个学生
5、绘制柱状图 plt.bar 颜色、对其方式align、位置调整num-2*w
# x轴: 学生信息
stu=np.array(["张三","李四","王五","赵六","钱七","周八"])
num = np.arange(1,7) #学号
# x轴刻度: 注释掉为学号,放开为姓名
plt.xticks(num,stu)

# y轴: 两门成绩
score_chinese=np.random.randint(0,100,6)
score_maths=np.random.randint(0,100,6)
score_english=np.random.randint(0,100,6)
# 每组数据多少个轴(语文、数学两个轴)
#n=2
n=3
w=0.8/n

# 设置y轴刻度
plt.ylim(0,100)
plt.xlim(0,7)


# 图像对齐方式align: 居中center 左对齐edge


# 双数个轴用 edge
#plt.bar(num-w,score_chinese,label='语文',color='green',width=w,align='edge')
#plt.bar(num,score_maths,label='数学',color='blue',width=w,align='edge')
# plt.bar(num+w,score_english,label='英语',color='red',width=w,align='center')

# 单数个轴用center
plt.bar(num,score_chinese,label='语文',color='green',width=w,align='center')
plt.bar(num-w,score_maths,label='数学',color='blue',width=w,align='center')
plt.bar(num+w,score_english,label='英语',color='red',width=w,align='center')

plt.legend(loc='upper left')
img_3e01f67d6f6034a5c4bf90c2db1fa7ed.png
偶数个轴
img_0f3deae54f36df7321d87662c41d25ab.png
奇数个轴
scores = pd.read_csv('../Pandas_module/student_info1.csv',header=1,names=['Chinese','Math','English'])
scores = scores.fillna(0)
scores
img_5c5b07a0cdb8a52d57ba37be280dc0b7.png
plt.bar(scores.index.values,scores['Chinese'])
img_09a1acca23eaaeb1fad1c0f9610c70f5.png

=== 直方图 ===

直方图(Histogram)又称质量分布图。是一种统计报告图,由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据类型,纵轴表示分布情况。

# 随机生成一组正态分布的数据
x=np.random.randn(1000)

# 用直方图表示这组数据
# plt(x,bins,weight)
# x: 数据
# bins: 多少个条状图
# weights: x的数据,对每一组的贡献(倍数) #得和我们的数据大小相同 #加上weight后,x的数据会乘以10体现在y轴刻度上
# bottom: 底部从多少开始,y轴刻度最低为10
# orientation= 'horizontal' 横向显示
w=np.random.randint(10,11,1000)
plt.hist(x,50,weights=w,bottom=100)
plt.show()
img_1d51b3a9b26973ec6d866a9c5d8747e7.png

=== 散点图 ===

# 散点图 scatter
# x身高 y体重
x=np.array([150,151,154,156,185,185,176,175,178,178,190,198,174])
y=np.array([45,45,46,47,70,76,65,64,67,65,68,67,87])

# 看哪个分布段的身高和体重最多
plt.scatter(x,y)
plt.show()
img_71dbc2b0c3cf49703297df6bb5660c16.png

=== 饼图 ===

# plt.pie()
month=['1月','2月','3月']
counts=[1300,1600,5000]
# 以逆时针来绘制
# startangle 开始绘制的角度
# explode 把饼取出来一点
# shadow 阴影
# autopct="%.1f%%" 显示百分比
# radius=0.8大小缩小到80%

explodes=[0.2,0,0]
plt.pie(counts,labels=month,startangle=90,explode=explodes
        ,shadow=True,autopct="%.1f%%",radius=0.8)
plt.show()
img_7f74299ee6451a023cf444319131f380.png
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值