2016-06-16 18 views
0

Ich versuche, ein Fehlerellipsoid in 3D zu plotten. Das ist natürlich nicht so schwer, aber ich habe Probleme mit den Kollern gefunden. Die Colormap, die ich verwendete, verwenden die Z-Werte für die Farbe. Ich möchte, dass die Beziehung der Entfernung zwischen einem Punkt auf dem Ellipsoid und einem anderen (für die einfache Verwendung der Mitte) Punkt beschreibt.Matplotlib Farbe Oberfläche Ellipsoid Abstand vom Zentrum

Jetzt ändern sich die Farben von unten nach oben, aber ich möchte, dass das auch eine horizontale Änderung aufgrund einer Änderung der verschiedenen Achsen hat.

Gibt es eine Möglichkeit, die Colormap so zu manipulieren, dass sie die Entfernungen statt dem Wert Z zeigt?

Ich dachte, vielleicht ist es möglich, ein Gitter zu graben, genau wie das Z, aber statt der Z-Punkte berechnet es die Entfernung. Ist es möglich, ein anderes 2D-Array für die Colormap anstelle des Standard-Z zu verwenden?

Danke für Ihre Hilfe

Antwort

0

Nun, ich habe die Antwort gefunden. Der folgende Code erzeugt den ellispoid und seine Entfernungen:

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() 

der Trick war facecolors zu verwenden, um die farbige Oberfläche zu dem anderen Datensatz zu setzen. Die Antwort finden Sie hier: Representing 4D data in mplot 3D using colormaps

Vielleicht wird es jemand anderen mit dem gleichen Problem, so dass das der Grund ist, warum ich meine eigenen anwser poste.