Matplotlib 是一个功能强大的数据可视化库,广泛应用于各种领域。
一、Matplotlib 简介
Matplotlib 是一款用于数据可视化的 Python 软件包,能够根据 NumPy ndarray 数组绘制 2D 图像。它支持跨平台运行,使用简单,代码清晰易懂。Matplotlib 的图形由 Figure(整个图形)、Axes(绘图区域)、Axis(坐标轴)和 Artist(图形元素)等组成。此外,还有多个功能扩展包,如 Basemap、Cartopy、Excel tools 等,进一步增强了其绘图能力。
二、安装 Matplotlib
安装 Matplotlib 非常简单,可以使用 pip 命令进行安装:
bash复制
pip install matplotlib -i https://pypi.tuna.tsinghua.edu.cn/simple/
三、Matplotlib 的应用场景
Matplotlib 在数据可视化方面有广泛的应用场景,包括但不限于:
-
企业领域:通过直观多样的图表展示数据,为企业决策提供支持。
-
股票走势预测:分析股票涨跌数据,为股民提供合理化建议。
-
商超产品销售:分析客户群体和购买产品,制定更好的销售策略。
-
预测销量:分析产品销量的影响因素,预测销量走势。
四、常用 API
Matplotlib 提供了丰富的 API,用于绘制各种类型的图表和操作图形元素。
4.1 绘图类型
| 函数名称 | 描述 |
|---|---|
| Bar | 绘制条形图 |
| Barh | 绘制水平条形图 |
| Boxplot | 绘制箱型图 |
| Hist | 绘制直方图 |
| Pie | 绘制饼状图 |
| Plot | 在坐标轴上画线或标记 |
| Polar | 绘制极坐标图 |
| Scatter | 绘制散点图 |
| Stackplot | 绘制堆叠图 |
| Stem | 绘制二维离散数据图 |
| Step | 绘制阶梯图 |
| Quiver | 绘制二维箭头图 |
4.2 Image 函数
| 函数名称 | 描述 |
|---|---|
| Imread | 从文件中读取图像数据并形成数组 |
| Imsave | 将数组另存为图像文件 |
| Imshow | 在数轴区域内显示图像 |
4.3 Axis 函数
| 函数名称 | 描述 |
|---|---|
| Axes | 在画布中添加轴 |
| Text | 向轴添加文本 |
| Title | 设置当前轴的标题 |
| Xlabel | 设置 x 轴标签 |
| Xlim | 获取或设置 x 轴区间大小 |
| Xscale | 设置 x 轴缩放比例 |
| Xticks | 获取或设置 x 轴刻度和标签 |
| Ylabel | 设置 y 轴标签 |
| Ylim | 获取或设置 y 轴区间大小 |
| Yscale | 设置 y 轴缩放比例 |
| Yticks | 获取或设置 y 轴刻度和标签 |
4.4 Figure 函数
| 函数名称 | 描述 |
|---|---|
| Figtext | 在画布上添加文本 |
| Figure | 创建一个新画布 |
| Show | 显示图形 |
| Savefig | 保存当前画布 |
| Close | 关闭画布窗口 |
五、pylab 模块
PyLab 是 Matplotlib 的一个绘图库接口,语法与 MATLAB 相近。它将 matplotlib.pyplot 和 numpy 的功能组合在一起,方便快速绘图和数值计算。然而,使用 pylab 可能会导致命名空间污染,不适合大型项目。相比之下,pyplot 提供了更底层的接口,更具灵活性。
六、常用函数
6.1 plot 函数
pylab.plot 用于绘制二维图形,根据 x 和 y 数据点绘制线条和/或标记。它接受多个参数,包括格式字符串,用于指定线条样式、颜色等。
案例:
Python复制
import pylab
x = pylab.linspace(-6, 6, 40)
y = x**2
pylab.plot(x, y, 'r:')
pylab.show()
6.2 figure 函数
figure() 函数用于创建一个新的图形对象,可以设置图形的大小、分辨率、背景颜色等。
案例:
Python复制
fig = pylab.figure(figsize=(10, 6), dpi=80)
6.3 subplot 函数
subplot 用于创建子图,参数为一个三位数的整数,表示子图的行数、列数和索引。
案例:
Python复制
fig, axs = pylab.subplots(2, 2)
6.4 subplots 函数
subplots 创建一个包含多个子图的图形窗口,返回一个包含所有子图的数组。
案例:
Python复制
fig, axs = pylab.subplots(2, 2, figsize=(10, 6))
6.5 subplot2grid 函数
subplot2grid 在网格中创建子图,允许更灵活地指定子图的位置和大小。
案例:
Python复制
ax = pylab.subplot2grid((3, 3), (0, 0), colspan=2)
6.6 grid 函数
grid 用于在图形中添加网格线,帮助读者更清晰地理解数据分布和趋势。
案例:
Python复制
ax.grid(True, axis='x', color='red', linestyle='--', linewidth=0.5)
6.7 xscale 和 yscale 函数
xscale 和 yscale 用于设置坐标轴的刻度类型,如线性刻度、对数刻度等。
案例:
Python复制
ax.set_yscale('log')
6.8 set_xlim 和 set_ylim 函数
set_xlim 和 set_ylim 用于设置坐标轴的范围。
案例:
Python复制
ax.set_xlim(0, 2 * math.pi)
ax.set_ylim(-1.5, 1.5)
6.9 set_xticks 和 set_yticks 函数
set_xticks 和 set_yticks 用于手动指定坐标轴的刻度位置。
案例:
Python复制
ax.set_xticks([0, 2, 4, 6, 8, 10])
ax.set_yticks([-1, -0.5, 0, 0.5, 1])
6.10 twinx 和 twiny 函数
twinx 和 twiny 用于创建共享 X 轴或 Y 轴的多个子图。
案例:
Python复制
ax2 = ax.twinx()
6.11 柱状图
柱状图用于展示分类数据的分布情况。
案例:
Python复制
categories = ['A', 'B', 'C', 'D']
values = [20, 35, 30, 25]
ax.bar(categories, values, color='skyblue', linewidth=1.5, width=0.6)
6.12 直方图
直方图用于展示数值数据的分布情况。
案例:
Python复制
data = np.random.randn(1000)
ax.hist(data, bins=30, color='skyblue', edgecolor='black')
6.13 饼图
饼图用于展示分类数据的占比情况。
案例:
Python复制
labels = ['A', 'B', 'C', 'D']
sizes = [15, 30, 45, 10]
ax.pie(sizes, labels=labels, autopct='%1.1f%%', startangle=90)
6.14 折线图
折线图用于展示数据的变化趋势。
案例:
Python复制
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
ax.plot(x, y1, label='sin(x)', color='blue')
ax.plot(x, y2, label='cos(x)', color='red')
6.15 散点图
散点图用于展示两个变量之间的关系。
案例:
Python复制
x = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
y0 = [120, 132, 101, 134, 90, 230, 210]
y1 = [220, 182, 191, 234, 290, 330, 310]
ax.scatter(x, y0, color='red')
ax.scatter(x, y1, color='blue')
6.16 图片读取
plt.imread 用于读取图像文件并将其转换为 NumPy 数组。
案例:
Python复制
img = plt.imread('leaf.png')
plt.imshow(img)
plt.show()

333

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



