Python编程数据分析篇之Matplotlib
文章目录
Matplotlib介绍#
什么是Matplotlib
Matplotlib是Python的一个基础绘图库,它可与Numpy一起使用,代替Matlab使用。
为什么要学习Matplotlib
- 将数据进行可视化,使数据更直观
- 使数据更具有说服力
- 直观筛选数据的异常值
- 为数据建模提供灵感
Matplotlib安装
由于Matplotlib是第三方库,所以我们需要安装它才可以使用。注意,Matplotlib3.0要求Python3版本才可安装使用。
安装命令: pip install Matplotlib
安装可参考官网:https://matplotlib.org/users/installing.html
Matplotlib绘图
图片与子图
Matplotlib所绘制的图位于图片(Figure)对象中。我们可以通过plt.figure生成一个新的图片
代码如下(示例):
import matplotlib.pyplot as plt
fig = plt.figure()
注意:
在IPython中,执行该代码一个空白的绘图窗口就会出现,但在Jupyter中则没有任何显示。但是,可以通过plt.subplot创建一个或多个子图。
**plt.subplot()**有返回值
除此之外,Matplotlib包含一个便捷方法plt.subplots创建一个新的图片,然后返回包含了已生成子图对象的Numpy数组。
- plt.subplots(nrows,ncols,sharex,sharey)
nrows:子图的行数
ncols:子图的列数
sharex:默认False,共享x轴
sharey:默认False,共享y轴
代码如下(示例):
import matplotlib.pyplot as plt
fig, axes = plt.subplots(2,2,sharex=True,sharey=True,figsize=(14,8))
axes[0,0].scatter(range(5), range(5)) # 选取第一张子图并绘制散点图
axes[0,1].scatter(range(5), list(range(5))[::-1]) # 选取第二张子图并绘制散点图
# 调整子图之间的间距
plt.subplots_adjust(wspace=0, hspace=0)
# 展示图片
plt.show()
注意:
plt.subplots有两个返回值fig,ax
实际上,当我们不需要使用子图时,可以直接使用plt对象绘制图形。
Matplotlib绘制图形
matplotlib能够绘制折线图,散点图,条形图,直方图和饼图等。
具体可参考:https://matplotlib.org/stable/gallery/index.html
折线图
折线图介绍
折线图以折线的上升或下降来表示统计数量的增减变化的统计图。
特点:能够显示数据的变化趋势,反映事物的变化情况
折线图绘制
-
plt.plot()
-
plt.subplots()
注意: -
第一种方法之所以能够直接使用plt对象调用plot()方法是因为默认使用的当前坐标轴。第二种方法是正常的逻辑,即使用plt.subplots()生成两个对象fig(画布或图片)和ax(坐标轴),再用ax调用plot()方法,也就是ax.plot()进行画图。
-
一块画布fig上可以画多张图,而每一张图都有一个的坐标轴,所以可以通过每张图的坐标轴调用plot()方法来指定在哪张图上画图。
-
plt.plot()可以直接画图而没有指定坐标轴,是因为它默认在当前轴上进行画图操作。
marker参数的使用说明
参数linstyle的使用说明
参数color的使用说明
图形组成
实际上,图形的组成除了x,y轴还有很多组件。如下图:
方法 | 描述 |
---|---|
plt.figure(figsize=None,dpi=None) | 生成新的图片或画布,figsize:画布大小;dpi:画布透明度 |
plt.savefig(fname) | 保存图片 |
plt.xticks(ticks=None) | 设置x轴刻度值 |
plt.yticks(ticks=None) | 设置y轴刻度值 |
plt.xlabel(xlabel) | 设置x轴标签 |
plt.ylabel(ylabel) | 设置x轴标签 |
plt.title() | 设置图片标题 |
plt.grid() | 根据x轴和y轴的数值展示轴网格 |
中文显示问题
# 法一
import matplotlib
font = {
'family':'SimHei',
'weight':'bold',
'size':12
}
matplotlib.rc('font',**font)
# 法二
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['SimHei'] # 步骤一:替换sans-serif字体
plt.rcParams['axes.unicode_minus'] = False # 步骤二:解决坐标轴负数的负号显示问题
# 法三(局部传参法)
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=f'c:\windows\fonts\simsun.ttc',size=14) # 相当于将windows中的这个字体注册到了matplotlib字体库中
plt.xitcks(x_t,fontproperties=font)
添加注释文本
plt.annotate() 基本使用
- text:要注释的文本
- xy:需要注释的点的坐标
- xytext:注释文本的坐标
- arrowprops:箭头的样式属性
散点图
散点图介绍
散点图用两