使用matplotlib在三维曲面上绘制相交的二维平面

2024-04-19 19:52:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含许多特性(比如F1F2,…)和预测值(比如P1)的数据帧。为了便于使用,我使用matplotlib 3d surface创建了一个ML模型结果的三维可视化,最终用户可以看到目标(P1)如何随着(F1F2)的变化而变化。你知道吗

现在我想添加另一个二维曲面,并以图形方式找出这两个曲面的交点。这可以使用户设置目标值(P1),并查看F1F2的所有可能值(产生等于或低于目标值)。你知道吗

简言之,我试图在三维空间中绘制一个二维平面,当z==0.5(比方说)并找到与我的三维曲面相交的线(对于给定的z,可能的x和y值)。你知道吗

代码:

fig = plt.figure()
ax = fig.gca(projection='3d')
  1. 我创建了一个三面体,如下所示:
 ax.plot_trisurf(df[F1], df[F2], df[P1], cmap=cm.coolwarm, linewidth=0, 
 antialiased=False)

我有一些情节如下: Trisurf

  1. 然后我试着ax.U曲面以添加另一个二维绘图。这是不可能的ax.U三曲线图. 在那里添加了另一个二维平面。你知道吗

    “从1d df列创建2D数组”

 x1 = np.linspace(df[F1].min(), df[F1].max(), len(df[F1].unique()))
 y1 = np.linspace(df[F2].min(), df[F2].max(), len(df[F2].unique()))
 x2, y2 = np.meshgrid(x1, y1)
 z2 = griddata((df[F1], df[F2]), df[P1], (x2, y2), method='cubic')

 surf = ax.plot_surface(x2, y2, z2, rstride=1, cstride=1, alpha=0.1)
 cset = ax.contourf(x2, y2, z2, zdir='z', offset=48, cmap=cm.coolwarm)

然后我得到一个如下的情节: plot_surface + contourf

我想知道这两个情节的交集。你知道吗

一种方法是使用10k×10k点的网格,确定每个点最近的网格,并将它们连接起来画一条相交线,但我想知道是否有任何图形化的方法来找出答案。你知道吗


Tags: dfplotnpaxsurface平面f2f1