Matplotlib学习

一、Matplotlib 库简介

Matplotlib 是 Python 中强大的数据可视化库,支持跨平台运行,能基于 NumPy 的 ndarray 数组绘制精美的 2D 图像。它的语法简单易懂,代码清晰,让开发者可以轻松地将数据转化为直观的可视化图表。

Matplotlib 图形主要由 Figure、Axes、Axis 和 Artist 组成:

  • Figure:整个图形,就像一张画布,容纳了所有的绘图元素,包括标题、轴线等。
  • Axes:绘制 2D 图像的实际区域,也叫轴域区或绘图区,是图形的核心部分。
  • Axis:坐标系中的垂直轴与水平轴,包含轴长、轴标签和刻度标签,用于界定数据的展示范围和标注信息。
  • Artist:画布上的所有元素,如文本对象(标题、轴标签)、Line2D 对象(用于绘制 2D 图像的线条)等,都属于 Artist 对象。

二、安装 Matplotlib

使用 pip 安装 Matplotlib 非常简单,在命令行中执行以下命令:

pip install matplotlib==3.3.4 -i https://pypi.tuna.tsinghua.edu.cn/simple/

上述命令指定安装版本为 3.3.4,并使用清华大学的镜像源加速下载。

三、Matplotlib 常用 API

3.1 绘图类型

Matplotlib 提供了丰富的绘图函数,用于创建各种类型的图表:

函数名称描述
Bar绘制条形图,用于比较不同类别数据的大小
Barh绘制水平条形图,适合展示较多类别时的数据对比
Boxplot绘制箱型图,展示数据的分布特征和统计信息
Hist绘制直方图,展示数值数据的分布情况
his2d绘制 2D 直方图,用于展示两个变量的联合分布
Pie绘制饼状图,展示分类数据的占比情况
Plot在坐标轴上画线或者标记,常用于绘制折线图
Polar绘制极坐标图,适用于展示具有角度和半径关系的数据
Scatter绘制 x 与 y 的散点图,展示两个变量之间的关系
Stackplot绘制堆叠图,展示多个数据系列的累积情况
Stem绘制二维离散数据(火柴图),突出离散数据点
Step绘制阶梯图,适合展示数据的变化阶段
Quiver绘制一个二维按箭头,用于展示向量场

3.2 Image 函数

处理图像数据时,Matplotlib 的 Image 函数很有用:

函数名称描述
Imread从文件中读取图像的数据并形成数组
Imsave将数组另存为图像文件
Imshow在数轴区域内显示图像

3.3 Axis 函数

Axis 函数用于对坐标轴进行设置和操作:

函数名称描述
Axes在画布 (Figure) 中添加轴
Text向轴添加文本
Title设置当前轴的标题
Xlabel设置 x 轴标签
Xlim获取或者设置 x 轴区间大小
Xscale设置 x 轴缩放比例
Xticks获取或设置 x 轴刻标和相应标签
Ylabel设置 y 轴的标签
Ylim获取或设置 y 轴的区间大小
Yscale设置 y 轴的缩放比例
Yticks获取或设置 y 轴的刻标和相应标签

四、Matplotlib 常用函数

4.1 plot 函数

pylab.plot用于绘制二维图形,可根据提供的 x 和 y 数据点绘制线条和 / 或标记。

import pylab

x = pylab.linspace(-6, 6, 40)
y = x**2
pylab.plot(x, y, 'r:')
pylab.show()

上述代码使用linspace生成等差数列作为 x 轴数据,计算对应的 y 轴数据后,用红色点线绘制图形。

4.2 figure 函数

figure()函数用于实例化 figure 对象,可设置图形样式。figure.add_axes()用于在画布中添加轴域对象,axes.legend()用于添加图例,方便识别不同数据系列。

import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure(figsize=(8, 6))
ax = fig.add_axes([0.1, 0.1, 0.8, 0.8])
x = np.linspace(0, 10, 100)
y = np.sin(x)
ax.plot(x, y)
plt.savefig('test.png')
plt.show()

4.3 subplot 相关函数

subplot是较早期的函数,用于创建并返回子图对象,通常用于创建网格状子图布局。add_subplot是 Figure 类的方法,更灵活,推荐使用。subplots函数可创建包含多个子图的图形窗口,返回包含所有子图的数组,方便操作。subplot2grid函数允许更灵活地指定子图位置和大小,创建复杂布局。

import matplotlib.pyplot as plt
import numpy as np

x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
y3 = np.tan(x)
fig, axs = plt.subplots(1, 3, figsize=(12, 4))
axs[0].plot(x, y1, label='sin(x)')
axs[0].set_title('Sine Wave')
axs[1].plot(x, y2, label='cos(x)')
axs[1].set_title('Cosine Wave')
axs[2].plot(x, y3, label='tan(x)')
axs[2].set_title('Tangent Wave')
for ax in axs:
    ax.set_xlabel('X-axis')
    ax.set_ylabel('Y-axis')
    ax.legend()
plt.tight_layout()
plt.show()

4.4 其他常用函数

  • grid 函数:用于在图形中添加网格线,帮助读者理解数据分布和趋势。
  • xscale 和 yscale 函数:设置坐标轴的刻度类型,如线性刻度、对数刻度等。
  • set_xlim 和 set_ylim 函数:设置坐标轴的范围。
  • set_xticks 和 set_yticks 函数:手动指定坐标轴的刻度位置。
  • twinx 和 twiny 函数:在同一个图形中创建共享 X 轴或 Y 轴的多个子图。

五、常见图表绘制

Matplotlib 可以绘制多种常见图表:

  • 柱状图:展示分类数据的分布情况,有普通柱状图、堆叠柱状图和分组柱状图等形式。
  • 直方图:展示数值数据的分布。
  • 饼图:展示分类数据的占比。
  • 折线图:通过plot函数绘制,展示数据的变化趋势。
  • 散点图:展示两个变量之间的关系。

柱状图举例:

import matplotlib.pyplot as plt
import numpy as np

# 定义柱状图的标签
labels = ['A', 'B', 'C', 'D', 'E']
# 定义每个柱子对应的数值
sizes = [20, 35, 30, 25, 40]

# 设置图形的大小
plt.figure(figsize=(8, 6))

# 创建柱状图
plt.bar(labels, sizes, color='skyblue')

# 添加标题和坐标轴标签
plt.title('Simple Bar Chart')
plt.xlabel('Categories')
plt.ylabel('Values')

# 显示图形
plt.show()

六、标题中文乱码处理

局部处理:

当标题设置为中文时,可能会出现乱码。局部处理可通过修改rcParams实现:

plt.rcParams['font.sans-serif']=['SimHei']
plt.rcParams['axes.unicode_minus']=False

全局处理:

首先,找到 matplotlibrc 文件的位置,可以使用以下代码:

import matplotlib
print(matplotlib.matplotlib_fname())

然后,修改 matplotlibrc 文件,找到 font.family font.sans-serif 项,设置为支持中文的字

体,如 SimHei。 同时,设置 axes.unicode_minus False 以正常显示负号。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值