You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Python中使用Matplotlib绘制双系列3D折线图?

Matplotlib 3D折线图:数据结构规范与坐标轴设置

一、数据结构规范

Matplotlib绘制3D折线图的核心规则:

  • 调用ax.plot(X, Y, Z)时,X、Y、Z必须是长度相同的一维数组,每一组索引对应的(X[i], Y[i], Z[i])构成折线的一个顶点。
  • 多组折线无需使用三维数组,只需为每组折线单独调用一次ax.plot(),传入该组对应的三个一维数组即可。

以你的示例数据为例:

  • 第一组折线:X固定为1(长度9的一维数组),Y为[1,2,3,4,5,6,7,8,9],Z为[1,1,1,1,5,1,1,1,1]
  • 第二组折线:X固定为2(长度9的一维数组),Y与第一组相同,Z为[4.5,5,5,5,5.5,5,5,5,4.5]

二、坐标轴设置(X轴刻度调整)

要让X轴仅显示1和2两个刻度,直接用ax.set_xticks()指定刻度值即可,还可配合ax.set_xlim()限定轴范围,让刻度显示更美观:

ax.set_xticks([1, 2])
ax.set_xlim(0.5, 2.5)  # 可选,避免刻度过于贴近轴边缘

三、完整可运行代码

import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import numpy as np

# 创建画布和3D轴
fig = plt.figure()
ax = fig.add_subplot(projection='3d')

# 定义数据
z_data = np.array([[1,1,1,1,5,1,1,1,1], [4.5,5,5,5,5.5,5,5,5,4.5]])
y = np.array([1,2,3,4,5,6,7,8,9])

# 绘制第一条折线(X=1)
x1 = np.ones(len(y))
ax.plot(x1, y, z_data[0], color='r', label='Group 1')

# 绘制第二条折线(X=2)
x2 = np.ones(len(y)) * 2
ax.plot(x2, y, z_data[1], color='g', label='Group 2')

# 设置坐标轴
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.set_xticks([1, 2])  # 仅显示1和2两个刻度
ax.set_box_aspect(aspect=(1,1,2))

# 添加图例
ax.legend()

plt.show()

关键疑问解答

  • 各轴数据尺寸必须匹配吗? 是的。3D折线图的每个点需要三个坐标值一一对应,X、Y、Z数组的长度必须完全一致,否则Matplotlib会抛出维度不匹配的错误。

内容的提问来源于stack exchange,提问作者Radika Moonesinghe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 21:52:47