如何在python中绘制四维曲面
我试图绘制曲面:W=(X*sin(Y)+Z)^2 有没有一种用Python实现的方法 在谷歌上进行的一般测试中,我没有发现任何相关信息如何在python中绘制四维曲面,python,Python,我试图绘制曲面:W=(X*sin(Y)+Z)^2 有没有一种用Python实现的方法 在谷歌上进行的一般测试中,我没有发现任何相关信息 谢谢你的帮助。这取决于你想看什么。如果您想查看函数的示例,可以使用平行坐标图。也可以固定x、y或z,这样就得到了一个三维曲面。绘制此函数肯定需要一些交互或约束,因为它有3个自由度。这取决于您希望看到的内容。如果您想查看函数的示例,可以使用平行坐标图。也可以固定x、y或z,这样就得到了一个三维曲面。你肯定需要一些交互或约束来绘制这个函数,因为它有3个自由度。你可以
谢谢你的帮助。这取决于你想看什么。如果您想查看函数的示例,可以使用平行坐标图。也可以固定x、y或z,这样就得到了一个三维曲面。绘制此函数肯定需要一些交互或约束,因为它有3个自由度。这取决于您希望看到的内容。如果您想查看函数的示例,可以使用平行坐标图。也可以固定x、y或z,这样就得到了一个三维曲面。你肯定需要一些交互或约束来绘制这个函数,因为它有3个自由度。你可以尝试使用切片视频查看你的函数
W(X,Y,Z)
例如,要查看沿z
-轴的切片,请执行以下操作:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig = plt.figure()
ax = fig.gca(projection='3d')
W = lambda X, Y, Z: (X*np.sin(Y)+Z)**2
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
z = np.linspace(0, 10, 100)
ax.set_xlim3d(min(x), max(x))
ax.set_ylim3d(min(y), max(y))
ax.set_zlim3d(min(z), max(z))
X, Y = np.meshgrid(x, y)
def animate_along_z(i):
z0 = z[i]
Z = W(X, Y, z0)
levels = np.linspace(Z.min(), Z.max(), 40)
ax.contourf(X, Y, Z, zdir='z', levels=levels, offset=z0, alpha=1)
ani = FuncAnimation(fig, animate_along_z, interval=len(z))
plt.show()
同时检查它看起来像MATLABslice
另一种解决方案是以固定值W
绘制一个iso曲面(或多个iso曲面)
散点3D绘图
# Creating dataset
x,y,z = np.meshgrid(np.linspace(0, 10, 20),
np.linspace(0, 10, 20),
np.linspace(0, 10, 20))
w = W(x,y,z)
# Creating plot
ax.scatter3D(x, y, z, alpha = 0.8, c = w, cmap = plt.get_cmap('jet'), marker = '.')
plt.show()
散布路径
# Creating parametric line
t = np.linspace(0, 10, 100)
x = 10*np.sin(t)
y = 10*np.cos(t)
z = t
w = W(x,y,z)
# Creating plot
ax.scatter3D(x, y, z, alpha = 0.8, c = w, cmap = plt.get_cmap('hsv'), marker = '.')
plt.show()
您可以尝试使用切片视频查看您的函数
W(X,Y,Z)
例如,要查看沿z
-轴的切片,请执行以下操作:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
fig = plt.figure()
ax = fig.gca(projection='3d')
W = lambda X, Y, Z: (X*np.sin(Y)+Z)**2
x = np.linspace(0, 10, 100)
y = np.linspace(0, 10, 100)
z = np.linspace(0, 10, 100)
ax.set_xlim3d(min(x), max(x))
ax.set_ylim3d(min(y), max(y))
ax.set_zlim3d(min(z), max(z))
X, Y = np.meshgrid(x, y)
def animate_along_z(i):
z0 = z[i]
Z = W(X, Y, z0)
levels = np.linspace(Z.min(), Z.max(), 40)
ax.contourf(X, Y, Z, zdir='z', levels=levels, offset=z0, alpha=1)
ani = FuncAnimation(fig, animate_along_z, interval=len(z))
plt.show()
同时检查它看起来像MATLABslice
另一种解决方案是以固定值W
绘制一个iso曲面(或多个iso曲面)
散点3D绘图
# Creating dataset
x,y,z = np.meshgrid(np.linspace(0, 10, 20),
np.linspace(0, 10, 20),
np.linspace(0, 10, 20))
w = W(x,y,z)
# Creating plot
ax.scatter3D(x, y, z, alpha = 0.8, c = w, cmap = plt.get_cmap('jet'), marker = '.')
plt.show()
散布路径
# Creating parametric line
t = np.linspace(0, 10, 100)
x = 10*np.sin(t)
y = 10*np.cos(t)
z = t
w = W(x,y,z)
# Creating plot
ax.scatter3D(x, y, z, alpha = 0.8, c = w, cmap = plt.get_cmap('hsv'), marker = '.')
plt.show()
并应提供您想要的答案。我想把表面画成三维,第四维用颜色表示。你有这样的例子吗?我想把表面画成三维,第四维用颜色表示。你有这样的例子吗?太棒了!谢谢你,你帮了我很多忙!我很乐意,如果你觉得合适的话,你可以接受我的答案。有没有一种方法可以对它进行散射?是的,你可以对常规网格(见答案中的示例)或随机网格进行3D散射。我正在尝试绘制一些路径。我有4个数组,我想在图表上显示它们。我想到了这样的东西:ax.scatter3D(a_-arr,b_-arr,c_-arr,alpha=0.8,c=error_-arr,cmap=plt.get_-cmap('hsv'),marker='))这就是实现它的方法吗?太棒了!谢谢你,你帮了我很多忙!我很乐意,如果你觉得合适的话,你可以接受我的答案。有没有一种方法可以对它进行散射?是的,你可以对常规网格(见答案中的示例)或随机网格进行3D散射。我正在尝试绘制一些路径。我有4个数组,我想在图表上显示它们。我想到了这样的东西:ax.scatter3D(a_-arr,b_-arr,c_-arr,alpha=0.8,c=error_-arr,cmap=plt.get_-cmap('hsv'),marker='))这就是方法吗?