Je pense que le problème principal est que vous avez 4 informations pour chaque point, donc vous êtes réellement interessé dans un objet en 4 dimensions. Tracer ceci est toujours difficile (peut-être même impossible). Je suggère l'une des solutions suivantes:
Vous changer la question: Je ne suis pas interessted dans toutes les combinaisons de x, y, z, mais seulement ceux où z = f(x,y)
changement Vous l'exactitude de vous tracer un peu, en disant que vous n'avez pas besoin de 100 niveaux de z, mais seulement peut-être 5, alors vous faites simplement 5 des parcelles que vous avez déjà.
Si vous souhaitez utiliser la première méthode, alors il y a plusieurs sous-méthodes:
A. Tracer la surface 2-dim f(x,y)=z
et la couleur avec T
B. Utiliser une technique qui est utilisée pour tracer des fonctions complexes, pour plus d'informations, voir here.
La parcelle donnée par la méthode 1.A (qui je pense est la meilleure solution) avec des rendements z=x^2+y^2
:
J'ai utilisé ce programme:
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()
La deuxième méthode donne quelque chose comme:
Avec le code:
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()
Note: J'ai changé la fonction de T = sin(X*Y*Z)
, car la division par X*Y*Z
rend le comportement des fonctions mauvaises, comme vous diviser deux nombres très proche de 0.
Votre question semble être similaire à celui-ci: http s: //stackoverflow.com/q/7011428/3272066 – Giorgio
@George Je dirais que cette question est de bien meilleure qualité, et pourrait bénéficier de réponses plus substantielles que celles données sur la question liée. – Mast
Oui, puisque Nachi a fourni des données, il serait intéressant de voir des captures d'écran de différentes approches pour visualiser ces données, que les questions liées n'ont pas – Eric