Matplotlib 数据绘图基础入门

Matplotlib 数据绘图基础入门

实验环境 : 华为云 FlexusX 实例 (Ubuntu 24.04, 8vCPU/16GiB)

Matplotlib 版本 : 3.6.3

实验日期 : 2026-06-29

作者: 腾讯开发者 - 华为云实战系列


目录

  • 实验背景
  • 环境准备
  • [实验1: 二维图形绘制](#实验1: 二维图形绘制 "#%E5%AE%9E%E9%AA%8C1-%E4%BA%8C%E7%BB%B4%E5%9B%BE%E5%BD%A2%E7%BB%98%E5%88%B6")
  • [实验2: 子图及组合图形](#实验2: 子图及组合图形 "#%E5%AE%9E%E9%AA%8C2-%E5%AD%90%E5%9B%BE%E5%8F%8A%E7%BB%84%E5%90%88%E5%9B%BE%E5%BD%A2")
  • [实验3: 兼容MATLAB风格API](#实验3: 兼容MATLAB风格API "#%E5%AE%9E%E9%AA%8C3-%E5%85%BC%E5%AE%B9matlab%E9%A3%8E%E6%A0%BCapi")
  • [实验4: 三维图形绘制](#实验4: 三维图形绘制 "#%E5%AE%9E%E9%AA%8C4-%E4%B8%89%E7%BB%B4%E5%9B%BE%E5%BD%A2%E7%BB%98%E5%88%B6")
  • [实验5: 三维混合图和三维子图](#实验5: 三维混合图和三维子图 "#%E5%AE%9E%E9%AA%8C5-%E4%B8%89%E7%BB%B4%E6%B7%B7%E5%90%88%E5%9B%BE%E5%92%8C%E4%B8%89%E7%BB%B4%E5%AD%90%E5%9B%BE")
  • 踩坑记录
  • 总结

实验背景

Matplotlib 是 Python 生态中最基础的绘图库,几乎所有的 Python 数据可视化工具(Seaborn、Pandas 内置绘图、Plotly 等)都构建在 Matplotlib 之上。本实验在华为云 FlexusX 实例上,通过 5 个递进实验,系统掌握 Matplotlib 的二维绘图、三维绘图、子图布局和 API 风格。

实验目标

  1. 掌握 6 种常用二维图的绘制方法
  2. 熟练使用 subplotGridSpec 创建规则/不规则子图
  3. 理解面向对象 API 与 MATLAB 风格 API 的区别
  4. 掌握 4 种三维图的绘制方法
  5. 学会三维混合图和三维子图的创建

环境准备

华为云服务器配置

参数
实例类型 FlexusX x2e.8u.16g
CPU 8vCPU
内存 16GiB
操作系统 Ubuntu 24.04 server 64bit
网络 5 Mbit/s BGP
Python 3.12.3
Matplotlib 3.6.3

安装 Matplotlib

bash 复制代码
# 更新软件源并安装 Matplotlib (Ubuntu 24.04)
export DEBIAN_FRONTEND=noninteractive
apt-get update -qq
apt-get install -y -qq python3-matplotlib python3-seaborn

验证安装

python 复制代码
import matplotlib
print(matplotlib.__version__)  # 3.6.3

实验数据准备

python 复制代码
import numpy as np

# 2D 数据
x = np.linspace(0, 10, 100)
y1 = np.sin(x)
y2 = np.cos(x)
np.save('/tmp/x_data.npy', x)
np.save('/tmp/y1_data.npy', y1)
np.save('/tmp/y2_data.npy', y2)

# 3D 数据
u = np.linspace(-2, 2, 50)
v = np.linspace(-2, 2, 50)
X, Y = np.meshgrid(u, v)
Z = X**2 + Y**2
np.save('/tmp/X_3d.npy', X)
np.save('/tmp/Y_3d.npy', Y)
np.save('/tmp/Z_3d.npy', Z)

实验1: 二维图形绘制

1.1 折线图 (Line Plot)

折线图是最基础的图表类型,用于展示数据随时间或其他连续变量的变化趋势。

python 复制代码
import numpy as np
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt

# 加载数据
x = np.load('/tmp/x_data.npy')
y1 = np.load('/tmp/y1_data.npy')
y2 = np.load('/tmp/y2_data.npy')

# 创建折线图
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, y1, label='sin(x)', linewidth=2, color='blue')
ax.plot(x, y2, label='cos(x)', linewidth=2, color='red', linestyle='--')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Line Plot: Sin and Cos')
ax.legend()
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('/tmp/line_plot.png')

关键参数说明:

参数 说明 示例值
linewidth 线条宽度 2
color 线条颜色 'blue', '#FF6B6B'
linestyle 线型 '-', '--', '-.', ':'
marker 数据点标记 'o', 's', '^'
label 图例标签 'sin(x)'

1.2 散点图 (Scatter Plot)

散点图用于展示两个变量之间的关系,适合观察相关性。

python 复制代码
fig, ax = plt.subplots(figsize=(8, 5))
np.random.seed(42)
x_scatter = np.random.randn(100)
y_scatter = np.random.randn(100)
colors = np.random.rand(100)
sizes = np.random.randint(20, 200, 100)
ax.scatter(x_scatter, y_scatter, c=colors, s=sizes, alpha=0.6, cmap='viridis')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_title('Scatter Plot with Color and Size Mapping')
plt.tight_layout()
plt.savefig('/tmp/scatter_plot.png')

关键参数说明:

参数 说明
c 点的颜色映射值
s 点的大小
alpha 透明度 (0~1)
cmap 颜色映射方案

1.3 柱状图 (Bar Plot)

柱状图用于比较不同类别的数值大小。

python 复制代码
fig, ax = plt.subplots(figsize=(8, 5))
categories = ['A', 'B', 'C', 'D', 'E']
values = [23, 45, 56, 78, 32]
ax.bar(categories, values, color=['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FECA57'])
ax.set_xlabel('Category')
ax.set_ylabel('Value')
ax.set_title('Bar Plot: Category vs Value')
ax.grid(True, alpha=0.3, axis='y')
plt.tight_layout()
plt.savefig('/tmp/bar_plot.png')

1.4 直方图 (Histogram)

直方图用于展示数值数据的分布情况。

python 复制代码
fig, ax = plt.subplots(figsize=(8, 5))
data_hist = np.random.randn(1000)
ax.hist(data_hist, bins=30, color='skyblue', edgecolor='black', alpha=0.7)
ax.set_xlabel('Value')
ax.set_ylabel('Frequency')
ax.set_title('Histogram: Normal Distribution')
ax.grid(True, alpha=0.3, axis='y')
plt.tight_layout()
plt.savefig('/tmp/hist_plot.png')

关键参数说明:

参数 说明
bins 柱状条数量
edgecolor 边框颜色
density 是否显示概率密度 (True/False)
cumulative 是否累积 (True/False)

1.5 饼图 (Pie Chart)

饼图用于展示各部分占整体的比例。

python 复制代码
fig, ax = plt.subplots(figsize=(8, 6))
sizes = [35, 25, 20, 15, 5]
labels = ['Python', 'Java', 'C++', 'JavaScript', 'Others']
colors_pie = ['#FF6B6B', '#4ECDC4', '#45B7D1', '#96CEB4', '#FECA57']
explode = (0.05, 0, 0, 0, 0)
ax.pie(sizes, labels=labels, colors=colors_pie, explode=explode, autopct='%1.1f%%', startangle=90)
ax.set_title('Pie Chart: Programming Language Popularity')
plt.tight_layout()
plt.savefig('/tmp/pie_plot.png')

关键参数说明:

参数 说明
explode 突出显示的扇形偏移量
autopct 百分比显示格式
startangle 起始角度
counterclock 是否逆时针 (True/False)

1.6 箱线图 (Box Plot)

箱线图用于展示数据的分布情况,包括中位数、四分位数和离群值。

python 复制代码
fig, ax = plt.subplots(figsize=(8, 5))
data_box = [np.random.normal(100, 10, 200), np.random.normal(90, 20, 200), np.random.normal(110, 15, 200)]
bp = ax.boxplot(data_box, labels=['Group A', 'Group B', 'Group C'], patch_artist=True)
# 自定义箱体颜色
colors_box = ['lightblue', 'lightgreen', 'lightcoral']
for patch, color in zip(bp['boxes'], colors_box):
    patch.set_facecolor(color)
ax.set_xlabel('Group')
ax.set_ylabel('Value')
ax.set_title('Box Plot: Group Comparison')
plt.tight_layout()
plt.savefig('/tmp/box_plot.png')

箱线图各元素含义:

scss 复制代码
┌─────────┐      ← 离群值 (Outliers)
│         │
├─────────┤      ← 上限 (Upper Whisker)
│    ┌───┐│
│    │   ││      ← 上四分位数 (Q3, 75%)
│    └───┘│
├──────────┤      ← 中位数 (Median, Q2, 50%)
│    ┌───┐│
│    │   ││      ← 下四分位数 (Q1, 25%)
├─────────┤      ← 下限 (Lower Whisker)
│         │
└─────────┘      ← 离群值

实验2: 子图及组合图形

2.1 规则子图 - subplot

subplot 用于创建规则的网格子图。

python 复制代码
fig, axes = plt.subplots(2, 2, figsize=(10, 8))
x = np.load('/tmp/x_data.npy')

axes[0, 0].plot(x, np.sin(x), 'b-', linewidth=2)
axes[0, 0].set_title('Sin(x)')
axes[0, 0].grid(True, alpha=0.3)

axes[0, 1].plot(x, np.cos(x), 'r--', linewidth=2)
axes[0, 1].set_title('Cos(x)')
axes[0, 1].grid(True, alpha=0.3)

axes[1, 0].plot(x, np.sin(x) * np.cos(x), 'g-.', linewidth=2)
axes[1, 0].set_title('Sin*Cos')
axes[1, 0].grid(True, alpha=0.3)

axes[1, 1].plot(x, np.exp(-x/5), 'm:', linewidth=2)
axes[1, 1].set_title('exp(-x/5)')
axes[1, 1].grid(True, alpha=0.3)

plt.tight_layout()
plt.savefig('/tmp/subplot_grid.png')

2.2 不规则子图 - GridSpec

GridSpec 用于创建不规则的子图布局,类似于 CSS Grid。

python 复制代码
fig = plt.figure(figsize=(10, 8))
gs = fig.add_gridspec(3, 3)

ax1 = fig.add_subplot(gs[0, :])  # 第0行,所有列
ax1.plot(x, np.sin(x), 'b-', linewidth=2)
ax1.set_title('Row 0: Sin(x)')

ax2 = fig.add_subplot(gs[1, :-1])  # 第1行,第0~1列
ax2.plot(x, np.cos(x), 'r--', linewidth=2)
ax2.set_title('Row 1, Col 0-1: Cos(x)')

ax3 = fig.add_subplot(gs[1:, -1])  # 第1~2行,第2列
ax3.plot(x, np.exp(-x/5), 'g-', linewidth=2)
ax3.set_title('Col 2, Row 1-2')

ax4 = fig.add_subplot(gs[2, 0])  # 第2行,第0列
ax4.plot(x, x**2/10, 'm-.', linewidth=2)
ax4.set_title('Row 2, Col 0')

ax5 = fig.add_subplot(gs[2, 1])  # 第2行,第1列
ax5.plot(x, np.log(x+1), 'c:', linewidth=2)
ax5.set_title('Row 2, Col 1')

plt.tight_layout()
plt.savefig('/tmp/subplot_irregular.png')

GridSpec 布局图示:

scss 复制代码
┌─────────────────────────────────────┐
│            Row 0 (ax1)           │
├──────────────┬──────────┬─────────┤
│   Row 1      │          │  Col 2  │
│   Col 0-1    │  (ax2)  │  (ax3)  │
├──────────────┼──────────┤         │
│  Row 2      │  Row 2   │         │
│  Col 0      │  Col 1    │         │
│  (ax4)      │  (ax5)    │         │
└──────────────┴──────────┴─────────┘

2.3 双Y轴组合图

双Y轴图用于展示两个不同量纲的变量在同一图中的变化趋势。

python 复制代码
fig, ax1 = plt.subplots(figsize=(8, 5))
x2 = np.arange(1, 11)
y21 = x2**2
y22 = x2 * 10

color1 = '#FF6B6B'
ax1.set_xlabel('X')
ax1.set_ylabel('X^2', color=color1)
ax1.plot(x2, y21, color=color1, linewidth=2, marker='o')
ax1.tick_params(axis='y', labelcolor=color1)
ax1.grid(True, alpha=0.3)

ax2 = ax1.twinx()  # 创建共享X轴的第二个Y轴
color2 = '#4ECDC4'
ax2.set_ylabel('X * 10', color=color2)
ax2.plot(x2, y22, color=color2, linewidth=2, marker='s', linestyle='--')
ax2.tick_params(axis='y', labelcolor=color2)

plt.title('Dual Y-Axis: X^2 vs X*10')
plt.tight_layout()
plt.savefig('/tmp/dual_axis.png')

实验3: 兼容MATLAB风格API

3.1 MATLAB风格API示例

MATLAB 风格 API 是 Matplotlib 早期提供的接口,与 MATLAB 的绘图命令相似。

python 复制代码
plt.figure(figsize=(8, 5))
plt.plot(x, np.sin(x), 'b-', linewidth=2, label='sin(x)')
plt.plot(x, np.cos(x), 'r--', linewidth=2, label='cos(x)')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('MATLAB-style API: Sin and Cos')
plt.legend()
plt.grid(True, alpha=0.3)
plt.tight_layout()
plt.savefig('/tmp/matlab_style.png')

3.2 面向对象API vs MATLAB风格对比

Matplotlib 提供两种编程风格:

对比项 面向对象API (OOP) MATLAB风格API
接口形式 ax.plot() plt.plot()
适用场景 复杂图表、子图 快速绘图、简单图表
灵活性
代码可读性 低(状态机模式)
推荐程度 ⭐⭐⭐⭐⭐ ⭐⭐⭐
python 复制代码
# 面向对象API (推荐)
fig, ax = plt.subplots()
ax.plot(x, np.sin(x))
ax.set_title('Object-Oriented API')

# MATLAB风格API
plt.plot(x, np.sin(x))
plt.title('MATLAB-style API')

3.3 图形属性设置

Matplotlib 提供了丰富的图形属性设置选项。

python 复制代码
fig, ax = plt.subplots(figsize=(8, 5))
ax.plot(x, np.sin(x), linewidth=3, color='darkblue', linestyle='-', marker='o', markersize=4, label='sin(x)')
ax.set_xlabel('X Axis', fontsize=12, fontweight='bold')
ax.set_ylabel('Y Axis', fontsize=12, fontweight='bold')
ax.set_title('Customized Plot', fontsize=14, fontweight='bold', color='darkred')
ax.legend(fontsize=10, loc='upper right', frameon=True, fancybox=True, shadow=True)
ax.grid(True, linestyle='--', alpha=0.5)
ax.set_facecolor('#F5F5F5')
fig.patch.set_facecolor('#E8E8E8')
plt.tight_layout()
plt.savefig('/tmp/customized_plot.png')

常用图形属性:

属性 参数 示例
标题 set_title() fontsize=14, fontweight='bold'
X轴标签 set_xlabel() fontsize=12
图例 legend() loc='upper right'
网格 grid() linestyle='--', alpha=0.5
背景色 set_facecolor() '#F5F5F5'

实验4: 三维图形绘制

4.1 3D折线图 (3D Line Plot)

python 复制代码
from mpl_toolkits.mplot3d import Axes3D

fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
t = np.linspace(0, 10*np.pi, 200)
x = np.cos(t)
y = np.sin(t)
z = t / 5
ax.plot(x, y, z, linewidth=2, color='blue')
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Line Plot: Spiral')
plt.tight_layout()
plt.savefig('/tmp/3d_line.png')

4.2 3D散点图 (3D Scatter Plot)

python 复制代码
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
np.random.seed(42)
n = 200
x = np.random.randn(n)
y = np.random.randn(n)
z = np.random.randn(n)
c = np.sqrt(x**2 + y**2 + z**2)
sc = ax.scatter(x, y, z, c=c, cmap='viridis', s=50, alpha=0.7)
plt.colorbar(sc, ax=ax, shrink=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Scatter Plot')
plt.tight_layout()
plt.savefig('/tmp/3d_scatter.png')

4.3 3D曲面图 (3D Surface Plot)

python 复制代码
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
u = np.linspace(-3, 3, 50)
v = np.linspace(-3, 3, 50)
X, Y = np.meshgrid(u, v)
Z = np.sin(np.sqrt(X**2 + Y**2))
surf = ax.plot_surface(X, Y, Z, cmap='coolwarm', alpha=0.9)
plt.colorbar(surf, ax=ax, shrink=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Surface Plot: sin(sqrt(X^2+Y^2))')
plt.tight_layout()
plt.savefig('/tmp/3d_surface.png')

4.4 3D线框图 (3D Wireframe)

python 复制代码
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
ax.plot_wireframe(X, Y, Z, color='blue', alpha=0.7, linewidth=0.5)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Wireframe Plot')
plt.tight_layout()
plt.savefig('/tmp/3d_wireframe.png')

实验5: 三维混合图和三维子图

5.1 3D混合图: 曲面 + 散点

python 复制代码
fig = plt.figure(figsize=(8, 6))
ax = fig.add_subplot(111, projection='3d')
# 绘制曲面
ax.plot_surface(X, Y, Z, cmap='viridis', alpha=0.6)
# 添加散点
np.random.seed(42)
x_sc = np.random.uniform(-3, 3, 30)
y_sc = np.random.uniform(-3, 3, 30)
z_sc = np.sin(np.sqrt(x_sc**2 + y_sc**2)) + np.random.randn(30)*0.2
ax.scatter(x_sc, y_sc, z_sc, c='red', s=50, alpha=0.8)
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_title('3D Mixed: Surface + Scatter')
plt.tight_layout()
plt.savefig('/tmp/3d_mixed.png')

5.2 3D子图

python 复制代码
fig = plt.figure(figsize=(12, 5))

# 子图1: 3D散点
ax1 = fig.add_subplot(131, projection='3d')
np.random.seed(42)
n = 100
x1 = np.random.randn(n)
y1 = np.random.randn(n)
z1 = np.random.randn(n)
ax1.scatter(x1, y1, z1, c='blue', alpha=0.6)
ax1.set_title('3D Scatter')

# 子图2: 3D曲面
ax2 = fig.add_subplot(132, projection='3d')
u2 = np.linspace(-2, 2, 30)
v2 = np.linspace(-2, 2, 30)
X2, Y2 = np.meshgrid(u2, v2)
Z2 = X2**2 - Y2**2
ax2.plot_surface(X2, Y2, Z2, cmap='coolwarm', alpha=0.8)
ax2.set_title('3D Surface: X^2-Y^2')

# 子图3: 3D柱状图
ax3 = fig.add_subplot(133, projection='3d')
x_pos = [1, 2, 3, 4, 5]
y_pos = [1, 2, 3, 4, 5]
z_pos = [0, 0, 0, 0, 0]
dx = dy = 0.5
dz = [2, 4, 6, 8, 10]
ax3.bar3d(x_pos, y_pos, z_pos, dx, dy, dz, color='green', alpha=0.7)
ax3.set_title('3D Bar Chart')

plt.tight_layout()
plt.savefig('/tmp/3d_subplots.png')

踩坑记录

坑1: AttributeError: 'Figure' object has no attribute 'add_subplot'

问题 : 在某些旧版本中,add_subplot 的调用方式不同。

解决方案: 确保使用 Matplotlib 3.x 以上版本,并使用正确的调用方式:

python 复制代码
# 正确
ax = fig.add_subplot(111, projection='3d')

# 错误 (某些情况下)
ax = plt.add_subplot(111, projection='3d')

坑2: 3D图表中文显示乱码

问题: 在 Ubuntu Server 上生成 3D 图表时,中文显示为方框。

解决方案:

python 复制代码
import matplotlib.pyplot as plt
plt.rcParams['font.sans-serif'] = ['DejaVu Sans', 'SimHei']
plt.rcParams['axes.unicode_minus'] = False

坑3: tight_layout() 导致3D图表显示异常

问题 : 在某些情况下,tight_layout() 会导致 3D 图表的视角发生变化。

解决方案 : 在 3D 图表中,使用 subplots_adjust() 代替 tight_layout()

python 复制代码
# 替代方案
plt.subplots_adjust(left=0.1, right=0.9, top=0.9, bottom=0.1)

坑4: bar3d 参数顺序容易混淆

问题 : bar3d 的参数顺序与 2D 的 bar 不同,容易出错。

参数对比:

参数 2D bar 3D bar3d
X位置 x x, y, z (底部位置)
宽度 width dx, dy, dz (三个方向的尺寸)
高度 height 包含在 dz
python 复制代码
# 2D
ax.bar(x, height)

# 3D
ax.bar3d(x, y, z, dx, dy, dz)

总结

通过本实验,在华为云 FlexusX 实例上完成了 Matplotlib 数据绘图的 5 个核心实验:

  1. 二维图形绘制: 掌握折线图、散点图、柱状图、直方图、饼图、箱线图的绘制方法
  2. 子图及组合图形 : 熟练使用 subplotGridSpec 创建规则/不规则子图,掌握双Y轴图的绘制
  3. 兼容MATLAB风格API: 理解面向对象API与MATLAB风格API的区别,掌握图形属性的自定义设置
  4. 三维图形绘制: 掌握 3D 折线图、散点图、曲面图、线框图的绘制方法
  5. 三维混合图和三维子图: 学会在同一图表中组合多种 3D 图形,以及创建 3D 子图

Matplotlib 架构图

scss 复制代码
┌─────────────────────────────────────────────────┐
│            Matplotlib 架构                     │
├─────────────────────────────────────────────────┤
│                                                 │
│  ┌─────────────┐      ┌─────────────┐        │
│  │   后端      │      │   前端      │        │
│  │ (Backend)  │ ←──→ │  (Frontend)│        │
│  │   Agg       │      │   pyplot    │        │
│  │   TkAgg     │      │   pylab     │        │
│  └─────────────┘      └─────────────┘        │
│         ↓                     ↓                  │
│  ┌─────────────────────────────────────┐      │
│  │          Artist 层                  │      │
│  │  Figure → Axes → Axis → Tick     │      │
│  └─────────────────────────────────────┘      │
└─────────────────────────────────────────────────┘

后续学习方向

  • Seaborn: 基于 Matplotlib 的高级统计可视化库
  • Plotly: 交互式图表库
  • Bokeh: 面向浏览器的交互式可视化库
  • Cartopy: 地图可视化库
  • Matplotlib 动画 : animation 模块创建动态图表

附录: Matplotlib 常用函数速查表

图表类型函数

函数 说明 示例
ax.plot() 折线图 ax.plot(x, y)
ax.scatter() 散点图 ax.scatter(x, y, c=z)
ax.bar() 柱状图 ax.bar(cat, val)
ax.hist() 直方图 ax.hist(data, bins=30)
ax.pie() 饼图 ax.pie(sizes, labels=labels)
ax.boxplot() 箱线图 ax.boxplot(data)
ax.imshow() 热力图 ax.imshow(matrix)
ax.contour() 等高线图 ax.contour(X, Y, Z)
ax.plot_surface() 3D曲面图 ax.plot_surface(X, Y, Z)
ax.plot_wireframe() 3D线框图 ax.plot_wireframe(X, Y, Z)

图形属性函数

函数 说明
ax.set_xlabel() 设置X轴标签
ax.set_ylabel() 设置Y轴标签
ax.set_title() 设置标题
ax.legend() 显示图例
ax.grid() 显示网格
ax.set_xlim() 设置X轴范围
ax.set_ylim() 设置Y轴范围
ax.set_xticks() 设置X轴刻度
ax.set_yticks() 设置Y轴刻度
fig.colorbar() 添加颜色条

实验服务器 : 华为云 FlexusX x2e.8u.16g (120.46.31.149)

实验日期 : 2026-06-29

完整代码 : GitHub 仓库链接

下一篇: 《Seaborn 统计可视化进阶实战》

相关推荐
江华森1 小时前
Spring Cloud 微服务全栈实战:从 Eureka 到 Docker Compose 一文贯通
运维
江华森1 小时前
NumPy 数值计算基础入门
运维
乘云数字DATABUFF4 天前
5分钟部署开源APM Databuff:OpenTelemetry全链路追踪入门实战
运维·后端
荣--6 天前
一键部署不是为了省时间 —— 它是把"买来的 PaaS"变成"自己的平台"的拐点
运维·zabbix·工程化·一键部署·平台化·边界设计
江华森6 天前
动手实战学 Docker — 从零到集群编排完全指南
运维
Avan_菜菜7 天前
FRP 内网穿透完整实战:从 HTTP 映射到 HTTPS 自签代理
运维·nginx·https
SelectDB8 天前
Litefuse 开源并推出单进程轻量模式,25 秒就能跑起来的 Agent 可观测与评估平台
运维·后端·自动化运维
XIAOHEZIcode9 天前
Linux系统鼠标偏移常见原因以及修复方案
linux·运维·游戏
用户03284722207010 天前
如何搭建本地yum源(上)
运维