如何在matplotlib中绘制仅基于单变量计算两个函数的3D图
3D单变量参数图实现方法
你要实现的是单变量X驱动的3D曲线/散点图,所有主流3D绘图库均支持该需求,无需构造常见的X-Y二维网格数据。
实现逻辑
仅需准备3个长度完全一致的一维数组即可:
- 一维数组
x:存储你的原始数据点 - 一维数组
y:每个元素对应y[i] = f(x[i])的计算结果 - 一维数组
z:每个元素对应z[i] = g(x[i])的计算结果
Python Matplotlib 实现示例
依赖导入
import numpy as np import matplotlib.pyplot as plt
自定义函数与数据生成
# 可替换为你自己的f(X)、g(X)实现 def f(x): return np.sin(x) def g(x): return np.cos(x) # 生成X轴原始数据点 x = np.linspace(0, 4*np.pi, 200) # 计算对应Y、Z值 y = f(x) z = g(x)
3D散点图绘制
fig = plt.figure() ax = fig.add_subplot(projection='3d') # 绘制散点 ax.scatter(x, y, z, c='red', marker='o') # 设置坐标轴标签 ax.set_xlabel('X (原始数据点)') ax.set_ylabel('Y = f(X)') ax.set_zlabel('Z = g(X)') plt.show()
3D连续曲线绘制
仅需将上述绘制代码中的scatter方法替换为plot即可:
ax.plot(x, y, z, c='blue', linewidth=2)
MATLAB 实现示例
% 生成数据 x = linspace(0, 4*pi, 200); y = sin(x); z = cos(x); % 绘制3D曲线 plot3(x, y, z, 'b-', 'LineWidth', 2); % 设置坐标轴标签 xlabel('X (原始数据点)'); ylabel('Y = f(X)'); zlabel('Z = g(X)'); grid on;
内容的提问来源于stack exchange,提问作者sycramore
相关产品推荐
相关产品推荐

