2017-02-16 4 views
0

Ich habe versucht, dies viel zu suchen und es gibt viele Informationen zu bestimmten Beispielen, aber sie sind zu spezifisch, um zu verstehen.Numpy N-D Matrix zu einem 3D Mesh Graph

Wie gebe ich Daten in eine Numpy N-D Matrix zu einem 3D-Diagramm. siehe unten. Beispiel

import numpy as np 
X =20 

Y = 20 
Z = 2 
sample = np.zeros(((X,Y,Z))) 
sample[1][2][2]=45 
sample[1][3][0]=52 
sample[1][8][1]=42 
sample[1][15][1]=30 
sample[1][19][2]=15 

I Werte auf X-, Y- und Z-Positionen in einem 3D-Diagramm (Diagramm) verwenden.

Vielen Dank im Voraus

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

# Define size of data 
P= 25 
X = 70 
Y = 25 
Z = 3 

# Create meshgrid 
x,y = np.meshgrid(np.arange(X),np.arange(Y)) 

# Create some random data (your example didn't work) 
sample = np.random.randn((((P,X,Y,Z)))) 

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

# Define colors 
colors=['b','r','g'] 

# Plot for each entry of in Z 
for i in range(Z): 
    ax.plot_wireframe(x, y, sample[:,:,:,i],color=colors[i]) 
    plt.draw() 
plt.show() 

Aber ich will nur X, Y, Z nur ziehen. Wenn ich oben Code Python verwendet, wirft mich viele Fehler wie ValueError: zu viele Werte zum Entpacken

+0

Bitte geben Sie eine [mcve] –

+0

@DanielForsman würde dies die Frage klar machen –

+0

Erklären, was Sie mit einem "Mesh-Diagramm" meinen, wäre ein Anfang. Vielleicht eine Testeingabe und die erwartete Ausgabe. –

Antwort

1

Sind Sie auf der Suche nach etwas Ähnlichem?

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

# Define size of data 
X = 20 
Y = 20 
Z = 3 

# Create meshgrid 
x,y = np.meshgrid(np.arange(X),np.arange(Y)) 

# Create some random data (your example didn't work) 
sample = np.random.randn(X,Y,Z) 

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

# Define colors 
colors=['b','r','g'] 

# Plot for each entry of in Z 
for i in range(Z): 
    ax.plot_wireframe(x, y, sample[:,:,i],color=colors[i]) 
    plt.draw() 
plt.show() 

, welche würden Sie

3D wireframe plot

Es gibt viele andere Möglichkeiten geben, in matplotlib 3D-Daten angezeigt werden, siehe auch here. Sie sind jedoch immer auf 3 Dimensionen beschränkt (oder 4, wenn Sie ein 3D-Streudiagramm erstellen, bei dem die Farbe die 4. Dimension codiert). Sie müssen also entscheiden, welche Dimensionen Sie anzeigen möchten oder ob Sie sie irgendwie zusammenfassen können.

+0

Dieser Code ist genau das was ich gesucht habe aber ich brauche es für eine 4D Matrix. Wenn ich deinen Code für eine 4D Matrix bearbeitet habe (siehe den bearbeiteten Code in der Post), gibt es mir viele Fehler –