在Python中用axes3D绘制出三维离散点图之后,怎样把它变为三维表面图,谢谢
2条回答 默认 最新
关注在Python中,你可以使用matplotlib的plot_surface函数来创建三维表面图。这个函数需要三个参数:X,Y和Z,它们都是二维数组,表示表面图的坐标。
以下是一个简单的例子:
import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D # 创建一个3D图形 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # 创建数据 x = np.random.standard_normal(100) y = np.random.standard_normal(100) z = np.random.standard_normal(100) # 先绘制离散点图 ax.scatter(x, y, z) # 为了绘制表面图,我们需要将数据转换为二维 xi = np.linspace(min(x), max(x)) yi = np.linspace(min(y), max(y)) X, Y = np.meshgrid(xi, yi) Z = np.array([np.mean(z[(x>=X[i,j]-0.5) & (x<=X[i,j]+0.5) & (y>=Y[i,j]-0.5) & (y<=Y[i,j]+0.5)]) for i,j in np.ndindex(X.shape)]).reshape(X.shape) # 绘制表面图 ax.plot_surface(X, Y, Z, rstride=1, cstride=1, color='b', alpha=0.5) plt.show()在这个例子中,我们首先创建了一个3D图形,并生成了一些随机数据。然后,我们使用scatter函数绘制了离散点图。
为了绘制表面图,我们需要将数据转换为二维。我们使用numpy的linspace函数和meshgrid函数来创建一个网格,然后计算每个网格点的z值。
最后,我们使用plot_surface函数来绘制表面图。rstride和cstride参数控制行和列的步长,color参数控制颜色,alpha参数控制透明度。
请注意,这个例子中的方法是一种简单的方法来从离散点创建表面图,可能不适用于所有情况。在实际应用中,你可能需要使用更复杂的插值或平滑方法来创建表面图。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报