如何在Python中将3个数组绘制为曲面图

2024-04-25 07:36:54 发布

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

我有三个数据数组,X,Y,Z,每个225个数字。我想做的是在曲面图上同时绘制所有三个值。当我尝试使用

ax.plot_surface(X,Y,Z)

它告诉我Z需要是一个2D数组。我查了一下,我发现如果它是X和Y的函数,可以画出Z,但是我需要第一个Z点与第一个X和Y点相关,在Python中这是可能的吗?在


Tags: 数据函数plot绘制数字数组axsurface
2条回答

如果你的数组都是一维的,那么我想你想要的是

ax.plot_trisurf(X,Y,Z, triangles=tri.triangles, cmap=plt.cm.Spectral)

更多信息请访问https://matplotlib.org/examples/mplot3d/trisurf3d_demo2.html

So, I've got three arrays of data, X, Y, and Z, each 225 numbers long. What I would like to do is to plot all three values at the same time on a surface plot.

所以,据我所知,你想要绘制一个三维曲面图。 但看起来你只提供了3个1xn阵列。(在这种情况下,n==255)

在绘制曲面图时,您实际要做的是获取每个可能的基准(XY平面)组合,并告诉给定XY坐标上的点Z有多高,因此Z被描述为函数Z(i,j)

but I need the first Z point to be associated with the first X and Y point etc. Is this possible in Python?

是的,但是如果您将每个Z点与第一个X,Y等等相关联,则只有X==Y的Z值,这对于您的surfaceplot来说是不完整的信息!在

matplotlib officialdocs提供了一个很好的surface plot示例

from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
from matplotlib import cm
from matplotlib.ticker import LinearLocator, FormatStrFormatter
import numpy as np


fig = plt.figure()
ax = fig.gca(projection='3d')

# Make data.
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

# Plot the surface.
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm,
                       linewidth=0, antialiased=False)

结果是:

enter image description here

代码的实际用途:

  • 定义输入向量X和Y(范围和间隔)
  • 用这些向量生成一个meshgrid(如果不清楚什么是meshgrid,请打印输出!)在
  • 在X,Y域上定义函数
  • 用它来得到Z

如果你检查,X,Y和Z是二维数组!在

希望有帮助!在

相关问题 更多 >