一、什么是matplotlib
1.能将数据进行可视化,更直观的呈现
2.使数据更加客观、更具说服力
matplotlib: Python底层绘图库,主要做数据可视化图表,名字取材于MATLAB,模仿MATLAB构建
二、简单的matplotlib的运用
from matplotlib import pyplot as plt # 导入pyplot
x = range(2,26,2)
#数据在x轴的位置,是一个可迭代对象
y = [15 , 13 , 14.5, 17, 20 , 25 , 2 ,2 ,24, 22 , 18 , 15]
#数据在y轴的位置,是一个可迭代对象
#x轴和y轴的数据一起组成了所有要绘制出的坐标>分别是(2,15),(4,13),(6,14.5),(8,17).....
plt.plot(x,y) #传入x和y,通过plot绘制出折线图
# 在执行程序的时候展示图形
plt.show()
三、对图像的处理
1.设置图片大小
from matplotlib import pyplot as plt
fig = plt.figure(figsize=(20,8),dpi=80)
# ->figure图形图标的意思,在这里指的就是我们画的图>通过实例化一个fgure并且传递参数能够在后台自动使用该fgure实例>在图像模糊的时候可以传入dpi参数,让图片更加清晰
x = range(2,26,2)
y =[15,13,14.5, 17, 20, 25 , 26 ,26 ,24, 22, 18 , 15]
plt.plot(x,y)
#>保存图片
plt.savefig("./sig_size.png")
#>可以保存为svg这种矢量图格式,放大不会有锯齿
plt.show()
通过fig = plt.figure(figsize = (15,8),dpi = 80) 可以将图形改变大小
plt.savefig("./sig_size.png") 通过这句代码可以保存为svg这种矢量图格式,放大不会有锯齿
2.调整x,y 轴上的刻度
plt.xticks(x) #设置x的刻度
#plt.xticks(x[::2])->当刻度太密集时候使用列表的步长(间隔取值)来解决,matplotlib会自动帮我们对应
rotation= 90
#为旋转参数90度
_x_ticks = ["10点{}分".format(i) for i in x if i < 60]
_x_ticks += ["11点{}分".format(i-60) for i in x if i > 60]
//设置X轴上的字符串刻度
plt.xticks(x[::5] , _x_ticks[::5],rotation=90)
//让列表X中的数据和_x_ticks上的数据都传入,最终会在x轴上一一对应显示出来
//两组数据的长度必须一样,否则不能完全覆盖整个轴
//使用列表的切片,每隔五个选一个数据进行展示
//为了让字符串不会覆盖,使用rotation选项,让字符串旋转90度展示
3.设置中文显示
为什么无法显示中文
matplotlib默认不支持中文字符,因为默认的英文字体无法显示汉字
可以直接在代码中加入这两行代码
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
4.给图像添加描述信息
plt.xlable("名") #设置x轴的label
plt.ylable("名") #设置y轴的label
plt.title("名") #设置title
5.自定义绘图风格
在plt.plot(x,y) 中可以加入其他指令
例如
color = 'r' #线条颜色
linestyle = '--' #线条风格
linewidth = 5,#线条粗细
alpha = 0.5 #透明度
6.每条线添加图例
plt.plot(label = "名")
# 通过label指定显示的图例内容
plt.legend(loc = "best")
# 通过loc指定图例的位置,默认为右上角
7.如何在一个图上绘制多个图形
只需进行多次plt.plot
四、绘制多种常见统计图
1.各种常见统计图的特点
折线图
以折线的上升或下降来表示统计数量的增减变化的统计图
特点:能够显示数据的变化趋势,反映事物的变化情况。(变化)
直方图
由一系列高度不等的纵向条纹或线段表示数据分布的情况。 一般用横轴表示数据范围,纵轴表示分布情况。
特点:绘制连续性的数据,展示一组或者多组数据的分布状况(统计)
条形图
排列在工作表的列或行中的数据可以绘制到条形图中。
特点:绘制连离散的数据,能够一眼看出各个数据的大小,比较数据之间的差别。(统计)
散点图
用两组数据构成多个坐标点,考察坐标点的分布,判断两变量 之间是否存在某种关联或总结坐标点的分布模式。
特点:判断变量之间是否存在数量关联趋势,展示离群点(分布规律)
2.绘制折线图
plt.plot(x,y)
3.绘制散点图
plt.scatter(x,y)
4.绘制条形图
plt.bar(x,y, width = 0.2, color - "orange")
#bar绘制条形图,只能接受含数字的可迭代对象
#width表示长条的宽度,默认0.8
5.绘制直方图
plt.hist(数据,组数,normed = 1)
#传入需要统计的数据,以及组数即可
normed : bool 是否绘制频率分布直方图,默认为频数直方图
plt.grid(True,linestyle = "-" ,alpha = 0.5)
#显示网格,alpha为透明度
组数:将数据分组,当数据在100个以内时,按数据多少常分为5-12组
组距:指每个小组的两个端点的距离
组数 = 极差 / 组距
一般来说,能够使用plt.hist方法的是那些没有统计过的数据