如何用Python结合Excel数据创建3D曲面图
直接用X/Y/Z离散数据生成3D图的实现方法
1. 3D散点图(适配无规则离散点)
如果你的X、Y、Z是独立一维数组(每行对应一个点的三维坐标),直接用scatter3D就能绘制:
import matplotlib.pyplot as plt import numpy as np # 替换成你实际的X/Y/Z数据 X = np.array([1, 2, 3, 4, 5]) Y = np.array([2, 4, 6, 8, 10]) Z = np.array([3, 6, 9, 12, 15]) fig = plt.figure() ax = fig.add_subplot(projection='3d') # 绘制3D散点,用Z值区分颜色 ax.scatter3D(X, Y, Z, c=Z, cmap='viridis') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
2. 3D曲面图(适配网格状数据)
如果你的X、Y、Z是网格点对应的数值(比如X/Y是网格横纵坐标,Z对应点高度),先把X/Y转成网格矩阵,再用plot_surface绘制:
import matplotlib.pyplot as plt import numpy as np # 替换成你实际的网格状X/Y/Z数据 X = np.array([[1, 2, 3], [1, 2, 3], [1, 2, 3]]) Y = np.array([[1, 1, 1], [2, 2, 2], [3, 3, 3]]) Z = np.array([[1, 2, 3], [2, 4, 6], [3, 6, 9]]) fig = plt.figure() ax = fig.add_subplot(projection='3d') # 绘制3D曲面 ax.plot_surface(X, Y, Z, cmap='viridis') # 设置坐标轴标签 ax.set_xlabel('X') ax.set_ylabel('Y') ax.set_zlabel('Z') plt.show()
如果你的原始X/Y是一维网格坐标(比如X=[1,2,3]、Y=[1,2,3]),可以用np.meshgrid转成网格矩阵:
X_1d = np.array([1,2,3]) Y_1d = np.array([1,2,3]) X, Y = np.meshgrid(X_1d, Y_1d) # 再对应生成3x3的Z数组即可
验证图表正确性的方法
- 抽选几个关键点,手动核对坐标:比如找X、Y的特定取值,对应查看图表中该点的Z值是否和原始数据匹配
- 曲面图需检查网格排列逻辑:确认X/Y的递增方向和图表轴方向一致,避免数据错位
内容的提问来源于stack exchange,提问作者PieThon
相关产品推荐
相关产品推荐

