如何在python中绘制四维曲面

如何在python中绘制四维曲面,python,Python,我试图绘制曲面:W=(X*sin(Y)+Z)^2 有没有一种用Python实现的方法 在谷歌上进行的一般测试中,我没有发现任何相关信息 谢谢你的帮助。这取决于你想看什么。如果您想查看函数的示例,可以使用平行坐标图。也可以固定x、y或z,这样就得到了一个三维曲面。绘制此函数肯定需要一些交互或约束,因为它有3个自由度。这取决于您希望看到的内容。如果您想查看函数的示例,可以使用平行坐标图。也可以固定x、y或z,这样就得到了一个三维曲面。你肯定需要一些交互或约束来绘制这个函数,因为它有3个自由度。你可以

我试图绘制曲面:W=(X*sin(Y)+Z)^2

有没有一种用Python实现的方法

在谷歌上进行的一般测试中,我没有发现任何相关信息


谢谢你的帮助。

这取决于你想看什么。如果您想查看函数的示例,可以使用平行坐标图。也可以固定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()

同时检查它看起来像MATLAB
slice

另一种解决方案是以固定值
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()

同时检查它看起来像MATLAB
slice

另一种解决方案是以固定值
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='))这就是方法吗?