我认为主要的问题是,你确实有4个信息的每个点,所以你实际上是在一个4维的对象。绘制这个总是很困难(甚至不可能)。我建议以下解决方案之一:
您更改问题:我不是在X,Y,Z的所有组合interessted,但只有那些,其中z = f(x,y)
你改变你的精确度有点小,说你不需要100个z的等级,但只有5个等级,那么你只需制作5个你已经拥有的情节。
在您要使用的第一种方法的情况下,则有几个子方法:
A.情节2暗淡表面f(x,y)=z
与T
B.色彩运用它时使用任何TECHNIC以绘制复杂的功能,更多信息请参阅here。
的方法1.A(我认为这是最好的解决方案)与z=x^2+y^2
产量给出的情节:
我用这个PROGRAMM:
import numpy as np
from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
import matplotlib as mpl
X, Y = np.mgrid[-10:10:100j, -10:10:100j]
Z = (X**2+Y**2)/10 #definition of f
T = np.sin(X*Y*Z)
norm = mpl.colors.Normalize(vmin=np.amin(T), vmax=np.amax(T))
T = mpl.cm.hot(T) #change T to colors
fig = plt.figure()
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, facecolors=T, linewidth=0,
cstride = 1, rstride = 1)
plt.show()
第二种方法给出了类似:
随着代码:
norm = mpl.colors.Normalize(vmin=-1, vmax=1)
X, Y= np.mgrid[-10:10:101j, -10:10:101j]
fig = plt.figure()
ax = fig.gca(projection='3d')
for i in np.linspace(-1,1,5):
Z = np.zeros(X.shape)+i
T = np.sin(X*Y*Z)
T = mpl.cm.hot(T)
ax.plot_surface(X, Y, Z, facecolors=T, linewidth=0, alpha = 0.5, cstride
= 10, rstride = 10)
plt.show()
注:我改变了功能T = sin(X*Y*Z)
因为X*Y*Z
将使得功能的行为不好,你分上下两数非常接近0
你的问题似乎是类似于这个:http s://stackoverflow.com/q/7011428/3272066 – Giorgio
@George我会说这个问题质量高得多,并且可能会从比链接问题更多的实质性答案中受益。 – Mast
是的,因为Nachi提供了数据,所以可以很方便地看到各种方法的截图来显示数据,这些链接的问题没有 – Eric