matplotlib教程

第一章 初识matplotlib

1.1 matplotlib概述

       matplotlib是由约翰 ⋅ \cdot 亨特等人仿照MATLAB写的一种用于绘制2D、3D图表的工具。该工具不仅提供丰富的图表绘制函数,而且可以对图表样式和元素进行定制。目前,matplotlib支持numpy和pandas数据结构。为了方便操作,matplotlib官方提供3种API::pyplotAPI, object-oriented API、pylab API。
1. pyplot API
       pyplot API使用pyplot模块开发接口,该接口底层封装了一系列与MATLAB命令同名的函数,使得MATLAB用户可以快速绘制图表。当使用pyplotAPI绘图时,需要先使用“import matplotlib.pyplot as plt”语句导入pyplot模块,并使用该模块调用绘制函数可在当前的画布和绘图区域中绘制图表。
2. object-oriented API
       object-oriented API是面向对象的接口,该接口包含了一系列对应图表元素的类,只有创建这些类的对象并按照隶属关系组合到一起才能完成绘制。当使用object-oriented API绘图时,首先创建画布(Figure类对象),再在该画布上添加拥有坐标系统的绘图区域(Axes类对象),最后在该绘图区域中调用绘图方法绘制图表。
3. pylab API
       pylab API是使用pylab模块开发的接口,最初是为了模仿MATLAB工作方式而设计的,包括pyplot、numpy模块及一些其他附加功能。matplot官方不建议使用pylab API进行开发,并在最新版中弃用了pylab API。

1.2 matplotlib绘制图形的层次结构

       matplotlib绘制图表和画素描类似,假设我们想画一幅素描,首先需要在画架上放置一个画板,然后在画板上固定一张素描纸,最后在素描纸上进行创作。同理,matlablib绘制的图形并非只有一一层结构,它也是由多层结构组成,以便对每层结构进行单独设置。
       matplotlib绘制的图形主要由三层结构组成:容器层、图像层和辅助显示层。
1. 容器层
       容器层主要由Canvas对象、Figure对象和Axes对象组成,其中Canvas对象充当画板的角色,位于底层;Figure对象充当素描纸的角色,即画布,它可以包含多个图表,位于Canvas对象上方,也就是用户操作的第一层;Axes对象充当画布中绘图区域的角色,它拥有独立的坐标系,可以将其看作一个图表,位于Figure对象的上方,也就是用户操作应用层的第二层。它们之间的关系如下图所示。

                                   图1-1 Canvas对象、Figure对象和Axes对象之间的关系
2. 图像层
       图像层是指在绘图区域内绘制的图形。
3. 辅助显示层
       辅助显示层是指在绘图区域内除绘制图形以外的元素,包括坐标轴、标题、注释文本等。

实例 1-1:
步骤一:创建画布

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = x ** 2

fig = plt.figure()  # 创建画布

步骤二:创建带坐标系的绘图区域

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = x ** 2

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
plt.show()
                                                                                       图1-2 坐标系绘图区域

步骤三:绘制曲线

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 100)
y = x ** 2

fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.plot(x, y)  # 绘制曲线
plt.show()
                                                                                       图1-3 绘制曲线

第二章 常见的绘图函数

2.1 折线图

        折线图是将数据标注成点,并通过直线将这些点按顺序连接而成的图表,主要用于反映事物延某个维度的变化趋势,例如数据增减趋势、速率和峰值等特征。plot()函数的语法格式如下:

plot(x, y, fmt, scalex=True, scaley=True, data=None, label=None, *args, *kwargs)
# x表示x轴的数据。
# y表示y轴的数据。
# fmt表示快速设置线条样式的格式字符串。
# label表示应用于图例的标签文本。

实例 2-1 见实例1-1。

2.2 散点图

        散点图又称X-Y图,是由若干个数据点组成的图表,主要用于判断两变量之间的相关性。若所有数据点在一条直线附近波动,说明变量之间是线性相关的;若所有数据点在曲线附近波动,说明变量之间是非线性相关的;若所有数据点没有显示任何关系,说明变量之间是不相关的。scatter()函数的语法格式如下:

scatter(x, y, s=None, c=None, marker=None, cmap=None, norm=None, vmin=None, vmax=None, alpha=None, linewidths=None, verts=None, edgecolors=None)
# x表示x轴的数据。
# y表示y轴的数据。
# s表示数据点大小。
# c表示数据点颜色。
# marker表示数据点的样式,默认为圆点。
# cmap表示数据点的颜色映射表,仅当参数c为浮点数组时才能够使用。
# norm表示数据点的亮度,可以取值为0~1。
# vmin表示亮度的最小值。
# vmax表示亮度的最大值。
# alpha表示透明度。
# linewidths表示数据点边缘的宽度。
# edgecolors表示数据点边缘的颜色。

实例 2-2

import matplotlib.pyplot as plt
import numpy as np

# 准备数据
x = np.linspace(0, 10, 30)
y = x ** 2

area = np.linspace(0, 10, 30) * 5
fig = plt.figure()  # 创建画布
ax = fig.add_subplot(111)  # 创建坐标系绘图区域
ax.scatter(x, y, s=area, c='tomato')  # 绘制散点图
plt.show()
                                                                                       图2-1 散点图

2.3 箱形图

        箱形图又称盒须图、箱线图,是一种利用数据中的5个统计量(最大值、上四分位数、中位数、下四分位数和最小值)来描述的图表,主要用于识别异常值、判断偏态与尾重、比较数据形状,箱形图的结构及异常值如下图所示

                                                                                       图1-5 箱形图结构与异常值
        boxplot()函数的语法格式如下:

boxplot(x, notch=None, sym=None, vert=None, whis=None, position=None, widths=None, patch_artist=None, usermedians=None, showfliers=None, boxprops=None, labels=None, flierprops=None, medianprops=None, capprops=None, whiskerprops=None, manage_ticks=True, autorange=False, zorder=None, *, data=None)
# x表示绘制箱形图的数据。
# sym表示异常值对应的符号,默认值为空心圆圈。
# vert表示是否将箱形图垂直摆放,默认为垂直摆放。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值