Matplotlib是Python中最基础且广泛使用的数据可视化库,提供了丰富的绘图功能及高度自定义的图形生成能力。其核心优势在于:
- 多样的绘图类型:支持折线图、散点图、柱状图、饼图、等高线图等数十种可视化类型。
- 灵活的定制能力:提供细粒度的图形元素控制,可调整字体、线条、颜色、标注等所有视觉属性。
- 多后端支持:兼容多种输出格式(PNG、PDF、SVG等)及交互环境(Jupyter、Qt、GTK等),满足不同场景的展示需求。
一、Matplotlib库的安装
#pip方式安装Matplotlib库
#默认安装最新版本
pip install matplotlib
#安装指定的版本
pip install matplotlib==3.0.3
二、Matplotlib模块的基础应用
Matplotlib模块是一个第三方绘图库,在日常绘图中经常使用它的一个子库Pyplot,能够方便的进行2D图表的绘制,并且提供了与MATLAB(一个数学计算软件,统一了用于一维、二维与三维数值积分的函数)类似的绘图API。
# 导入Matplotlib模块的中的Pyplot子库
import matplotlib.pyplot as plt
Pyplot库中常用的绘制图表函数如下所示:
- plot():用于绘制线图或散点图(通过样式参数区分),是表示趋势和连续数据的常用方法。
- bar():用于绘制条形图(或称柱状图),支持垂直和水平两种方向,适用于分类数据的比较。
- hist():用于绘制直方图,直观展示数据的分布状况和频数。
- pie():用于绘制饼图,表现各部分占整体的比例关系。
- scatter():用于绘制散点图,分析两个变量之间的相关性或分布。
- imshow():主要用于显示图像数据,可绘制二维数组表示的灰度图、彩色图,也常用于可视化热力图、矩阵或地理信息数据。
- subplots():这是创建子图的核心函数。通过指定行数、列数等参数,可以灵活控制子图的布局和尺寸,实现在单一窗口中同时排列和显示多个图表。
# Pyplot子库中用于绘制各类图表的示例代码
# 导入所需模块
import numpy as np
import matplotlib.pyplot as plt
import matplotlib
# 设置Matplotlib正常显示中文和负号
matplotlib.rcParams['font.sans-serif'] = ['SimHei'] # 指定默认字体为黑体
matplotlib.rcParams['axes.unicode_minus'] = False # 解决保存图像时负号'-'显示为方块的问题
# 创建一个3x2的子图网格
fig, axs = plt.subplots(3, 2, figsize=(10, 10))
# 第一行第一列绘制线图
# 创建坐标数据
x = np.linspace(0, 10, 100)#点的x坐标,0-10的等差数列,个数为100,包含0不包含10
y = np.sin(x)#点的y坐标,根据x数据计算出符合正弦函数的y值
axs[0, 0].plot(x, y, label='sin(x)')
axs[0, 0].legend()#设置图例
axs[0, 0].set_title('线图')#设置图表的标题
axs[0, 0].set_xlabel('x')#设置x轴的标签名称
axs[0, 0].set_ylabel('sin(x)')#设置y轴的标签名称
# 第一行第二列绘制散点图
# 创建散点的坐标数据
x = np.random.rand(50)#散点的x轴坐标
y = np.random.rand(50)#散点的y轴坐标
axs[0, 1].scatter(x, y)
axs[0, 1].set_title('散点图')
# 第二行第一列绘制条形图
# 创建垂直条形图数据
categories = ['A', 'B', 'C', 'D']#条形的名称,x轴数据
values = [23, 45, 56, 78]#条形的值,y轴数据
axs[1, 0].bar(categories, values)
axs[1, 0].set_title('条形图')
axs[1, 0].set_xlabel('名称')
axs[1, 0].set_ylabel('数量')
# 第二行第二列绘制直方图
# 构建随机的标准正态分布数组,数组的元素个数为1000个
data = np.random.randn(1000)
axs[1, 1].hist(data)
axs[1, 1].set_title('直方图')
# 第三行第一列绘制饼图
# 创建饼图的数据
sizes = [15, 30, 45, 10]#每个块的大小
labels = ['Frogs', 'Hogs', 'Dogs', 'Logs']#每个块的名称
colors = ['gold', 'yellowgreen', 'lightcoral', 'lightskyblue']#每个块的颜色
explode = (0.1, 0, 0, 0)#块的显示方式,只让第一个“片”突出
axs[2, 0].pie(sizes, explode=explode, labels=labels, colors=colors, autopct='%1.1f%%', shadow=True, startangle=140)
axs[2, 0].axis('equal') # 确保饼图是圆形的
axs[2, 0].set_title('饼图')
# 第三行第二列绘制热力图
data = np.random.rand(10, 10)
im=axs[2, 1].imshow(data, cmap='hot')
fig.colorbar(im) # 显示热力柱
axs[2, 1].set_title('热力图')
# 显示整个图形,并自动调整子图参数以填充整个图像区域
plt.tight_layout()
# 显示绘制的图像
plt.show()

三、标记的设置
一般可以使用plot()方法中的marker参数来设置标记符号
|
标记 |
说明 |
符号 |
|
"." |
marker参数设置为该标记后,数据点会显示为一个圆点 |
|
|
"^" |
marker参数设置为该标记后,数据点会显示为一个向上的实心三角(中心点在标记中心) | |
|
"1" |
marker参数设置为该标记后,数据点会显示为一个向下的三叉符号(中心点在标记中心) | |
|
"2" |
marker参数设置为该标记后,数据点会显示为一个向上的三叉符号(中心点在标记中心) | |
|
"8" |
marker参数设置为该标记后,数据点会显示为一个正八边形(中心点在标记中心) |
|
|
"s" |
marker参数设置为该标记后,数据点会显示为一个正方形(中心点在标记中心) |
|
|
"X" |
marker参数设置为该标记后,数据点会显示为乘号(垂填充)(中心点在标记中心) | |
|
"D" |
marker参数设置为该标记后,数据点会显示为一个菱形(标准菱形)(中心点在标记中心) | |
|
"d" |
marker参数设置为该标记后,数据点会显示为一个菱形(细长菱形)(中心点在标记中心) |
绘图标记不仅可以通过marker参数进行设置,还可以通过fmt参数来进行设置,只是fmt参数的设置比较特殊,可以同时接受三个参数,分别用来设置标记的形状、线的样式、颜色。fmt参数的语法代码如下所示:
# fmt参数语法代码
fmt = '[marker][line][color]'
- 第一个值marker表示标记的形状,可以设置的值可以参照上面表中字符串类型的值。
- 第二个值line表示线的样式,'-'设置线的样式为实线;':'设置线的样式为虚线;'--'设置线的样式为破折线;'-.'设置线的样式为点划线。
第三个值color表示设置的颜色(应用与绘图标记与线),此种方式设置的颜色仅能使用内置的颜色值,例如,'r'表示红色等。
|
颜色标记 |
说明 |
|
'r' |
红色 |
|
'g' |
绿色 |
|
'b' |
蓝色 |
|
'c' |
青色 |
|
'm' |
品红 |
|
'y' |
黄色 |
|
'k' |
黑色 |
|
'w' |
白色 |
fmt参数方式设置绘图标记的示例代码如下所示:
# fmt方式设置绘图标记
# 创建数据点的y轴坐标
ypoints = np.array([6, 2, 13, 10])
plt.plot(ypoints, '^:r')
plt.show()

四、绘图线的设置
plot()方法在绘图过程中不仅可以对绘图标记进行自定义设置,也可以对绘图线进行自定义设置(包括线的大小、类型、颜色等)。
- ls:该参数是linestyle的简写,用来进行绘图线样式的设置。参数值为“solid”表示线为实线,简写方式为“_”;参数值为“dotted”表示线为点虚线,简写方式为“:”;参数值为“dashdot”表示线为点划线,简写方式为“-.”;参数值为“dashed”表示线为破折线,简写方式为“--”;参数值为“None”表示不画线,简写方式为“ ”。
- c:该参数是color的简写,用来设置绘图线的颜色。可以使用默认的颜色值(包含“r”、“g”、“b”等值),也可以其它的颜色格式(rgb值、十六进制颜色值等)。
- lw:该参数是linewidth的简写,用来进行绘图线宽度的设置。值可以设置为整数或者浮点型。
对绘图线进行自定义设置的具体示例代码如下所示:
# 绘图线的自定设置示例
import matplotlib.pyplot as plt
import numpy as np
# 创建数据点的坐标数据
x = np.linspace(0, 10, 100)
y = np.sin(x)
y2=np.cos(x)
# 自定义线条样式:红色、虚线、线宽为2 sinx
plt.plot(x, y, c='r', ls='--', lw=2)
# 自定义线条样式:绿色、点划线、线宽为2 cosx
plt.plot(x, y2, c='g', ls='-.', lw=2)
# 显示图形
plt.show()

五、matplotlib中绘图对象的布局
在matplotlib中绘图对象可以划分为几层,其中最外层是Figure对象,可以看作一个画板对象,所以的内容都会绘制在这个“画板”上,一个Figure对象能够包含所有的子Axes对象。内层是Axes对象,是一个子图对象(可以理解为一个坐标系),由坐标轴、坐标轴标签、标题、绘图区域几部分组成。


4856



被折叠的 条评论
为什么被折叠?



