2017-10-22 2 views
0

Ich versuche, ein 3D-NumPy-Array zu plotten, das ganzzahlige Werte hat.Wie könnte ich 3D-Gitter mit mplot3d und numpy array plotten?

import numpy as np 

def build(self): 
    grid = np.empty((10,10,10)) 
    grid = grid.astype(np.int) 
    grid.fill(-1) 
    return grid 

Die vorherige Methode erstellt ein 3D-Raster und füllt den Wert -1. In diesem Fall ist -1 eine Darstellung der leeren Zelle.

Setzen Sie 3 Elemente in diesem Raster, zum Beispiel in den Positionen (0,0,0), (0,0,1) y (5,5,5) Ich sehe nicht die gleiche Anzahl von Elementen nach der Handlung . Ich befestige hier ein Bild .

Es gibt ein viertes Element auf der rechten Seite des Bildes (mit geringer Tonalität).

Mein Code, um das Raster zu zeichnen ist, wie unten angegeben:

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 

def plot_grid(self, np_grid): 
     fig = plt.figure() 
     ax = fig.add_subplot(111, projection='3d') 
     x = np_grid.sum(0) 
     y = np_grid.sum(1) 
     z = np_grid.sum(2) 
     ax.scatter(x, y, -z, zdir='z', c='red') 
     plt.show() 

Ich glaube, ich nicht x,y,z Vektoren richtig bin immer. Wie kann ich x,y,z von ndarray richtig erhalten?

+0

Der Ansatz hier ist nicht verständlich. Bitte geben Sie ein [mcve] (einschließlich was "(0,0,0), (0,0,1) y (5,5,5)" tun sollte), erklären Sie dann klar, was passieren soll. Beachten Sie, dass bereits 'grid.fill (-1)' einfach überall -1 in das Array einfügt und das Summieren über die erste Achse Ihnen somit 10 * (- 1) gibt. – ImportanceOfBeingErnest

Antwort

1

Ich glaube, Ihr Problem ist, dass Sie die x, y und z als Arrays von ihrer eigenen passieren müssen:

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
fig = plt.figure() 
ax = fig.add_subplot(111, projection='3d') 
ax.scatter((0,0,5),(0,0,5),(0,1,5),zdir='z', c='red') 

Dies sollte Ihnen ein Grundstück wie folgt aus:

enter image description here

+1

Wenn ich die Frage nicht missverstanden habe, wenn ja, bitte klären Sie – erasmortg

+0

Danke für Ihre Antwort. Du hast meine Frage gut verstanden. Mein Fehler war, dass ich nicht wusste, wie man 'x, y und z' Vektoren erstellt. Mit deiner Antwort hast du illustriert, wie ich es machen kann. Ich muss die Koordinaten des Elements, das ich drucken möchte, durch separate Vektoren übernehmen. –

Verwandte Themen