2016-03-27 11 views
1

ich folgenden matplotlib Code bin mit einem 3D-Graphen zu erzeugen:Numpy Matrix für einen 3D-Matplotlib Graph

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

fig = plt.figure() 
ax = fig.gca(projection='3d') 
X, Y, Z = axes3d.get_test_data(0.05) 

ax.plot_surface(X, Y, Z, rstride=1, cstride=1, alpha=0.3) 
cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm) 
cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm) 
cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm) 

ax.set_xlim(-50, 50) 
ax.set_ylim(-50, 50) 
ax.set_zlim(-100, 100) 

plt.show() 

Das Problem ist, dass ich die Kontrolle haben, über die Matrix möchte in der Grafik angezeigt werden soll.

Ich habe mit der numpy Matrix Generation versucht,

X = np.matrix([[-30., -10., 10.],[ -30., -10., 10.],[-30., -10., 10.]]) 

aber ist mir worden geben einen Fehler von:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Wer weiß, was zu tun ist? Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

Es ist einfach. Um zu wissen, in welchem ​​Format Sie die Daten für X, Y und Z eingeben müssen, gehen Sie folgendermaßen vor.

Nach Linie X, Y, Z = axes3d.get_test_data(0.05) Fügen Sie diese Zeile print X

Sie das Eingabeformat kennen. auch für Ihr Problem, ändern Sie die folgenden

X = np.matrix([[-30., -10., 10.],[ -30., -10., 10.],[-30., -10., 10.]]) 

zu X = [[-30., -10., 10.],[ -30., -10., 10.],[-30., -10., 10.]]

Dementsprechend Y und Z ändern.

X = [[-30., -10., 10.],[ -30., -10., 10.],[-30., -10., 10.]] 
Y = [[-30., -10., 10.],[ -30., -10., 10.],[-30., -10., 10.]] 
Z = [[-30., -10., 10.],[ -30., -10., 10.],[-30., -10., 10.]] 
+0

Hallo Rajesh ... Ich habe bereits versucht, den Ausdruck und die Eingabe der Matrix, wie Sie sagen, aber der Code gibt mir einen weiteren Fehler. 'ValueError: Formkonflikt: Objekte können nicht zu einer einzigen Form gesendet werden'. Lass mich wissen, was du darüber denkst. Danke ... –

+0

Hallo James, hast du versucht, np.matrix zu entfernen? – Rajesh

+0

Ja, habe ich, ich habe 'X = np.matrix ([[- 30., -10., 10.], [-30., -10., 10.], [- 30., -10., 10.]]) 'Und hinzugefügt' X = [[-30., -10., 10..], [-30., -10., 10..], [-30., -10., 10.] ] ', Thx. –