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 风格。
实验目标
- 掌握 6 种常用二维图的绘制方法
- 熟练使用
subplot和GridSpec创建规则/不规则子图 - 理解面向对象 API 与 MATLAB 风格 API 的区别
- 掌握 4 种三维图的绘制方法
- 学会三维混合图和三维子图的创建
环境准备
华为云服务器配置
| 参数 | 值 |
|---|---|
| 实例类型 | 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 个核心实验:
- 二维图形绘制: 掌握折线图、散点图、柱状图、直方图、饼图、箱线图的绘制方法
- 子图及组合图形 : 熟练使用
subplot和GridSpec创建规则/不规则子图,掌握双Y轴图的绘制 - 兼容MATLAB风格API: 理解面向对象API与MATLAB风格API的区别,掌握图形属性的自定义设置
- 三维图形绘制: 掌握 3D 折线图、散点图、曲面图、线框图的绘制方法
- 三维混合图和三维子图: 学会在同一图表中组合多种 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 统计可视化进阶实战》