我認爲主要的問題是,你確實有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