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.
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)
如果你的数组都是一维的,那么我想你想要的是
ax.plot_trisurf(X,Y,Z, triangles=tri.triangles, cmap=plt.cm.Spectral)
更多信息请访问https://matplotlib.org/examples/mplot3d/trisurf3d_demo2.html
所以,据我所知,你想要绘制一个三维曲面图。 但看起来你只提供了3个1xn阵列。(在这种情况下,n==255)
在绘制曲面图时,您实际要做的是获取每个可能的基准(XY平面)组合,并告诉给定XY坐标上的点Z有多高,因此Z被描述为函数Z(i,j)
是的,但是如果您将每个Z点与第一个X,Y等等相关联,则只有X==Y的Z值,这对于您的surfaceplot来说是不完整的信息!在
matplotlib officialdocs提供了一个很好的surface plot示例
结果是:
代码的实际用途:
如果你检查,X,Y和Z是二维数组!在
希望有帮助!在
相关问题 更多 >
编程相关推荐