2016-06-16 1 views
0

J'essaie de tracer une ellipsoïde d'erreur en 3D. Ce n'est pas si difficile, mais j'ai trouvé des problèmes avec les collors. La palette de couleurs que j'ai utilisée utilise les valeurs Z pour la couleur. Je voudrais que le décrit la relation de la distance entre un point sur l'ellipsoïde et un autre point (pour un usage simple au centre).Matplotlib distance de la surface de couleur ellipsoïde du centre

Maintenant, le collor change de bas en haut, mais je voudrais aussi qu'il y ait un changement horizontal dû à un changement dans les différents axes.

Existe-t-il un moyen de manipuler la palette de couleurs afin qu'elle affiche les distances au lieu de la valeur Z?

Je pensais que peut-être il est possible d'ajouter une grille, comme le Z, mais au lieu des points Z, il calcule la distance. Est-il possible d'utiliser un autre tableau 2d pour la palette de couleurs au lieu de la valeur par défaut Z?

Merci pour votre aide

Répondre

0

Eh bien, j'ai trouvé la réponse. Le code suivant génère le ellispoid et ses distances:

from mpl_toolkits.mplot3d import Axes3D 
import matplotlib.pyplot as plt 
import numpy as np 
from matplotlib import cm 

fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 

u = np.linspace(0, 2 * np.pi, 100) 
v = np.linspace(0, np.pi, 100) 

x = 0.5 * np.outer(np.cos(u), np.sin(v)) 
y = 0.1 * np.outer(np.sin(u), np.sin(v)) 
z = 0.2 * np.outer(1, np.cos(v)) 
T = (x**2+y**2+z**2)**(1/2) 
ax.plot_surface(x, y, z, rstride=1, cstride=1, facecolors=cm.jet(T/float(T.max()))) 
#a = [max(x), max(y), max(z)] 

ax.set_xlim([-0.3, 0.3]) 
ax.set_ylim([-0.3, 0.3]) 
ax.set_zlim([-0.3, 0.3]) 
plt.show() 

le tour était d'utiliser facecolors pour définir la surface colorée à l'autre ensemble de données. La réponse est trouvée ici: Representing 4D data in mplot 3D using colormaps

Peut-être qu'il y aura quelqu'un d'autre avec le même problème, c'est pourquoi la raison pour laquelle je poste mon propre anwser.