Seite 1 von 1

3D Flächen und Linien mit numpy und matplotlib

Verfasst: Dienstag 1. Juni 2010, 12:48
von würmchen
Hi Leute,
ich versuch mich gerade an 3dplots und habe vor dreieckige, viereckige Flächen und Linien im 3D Raum zu zeichnen. Zu den Flächen und Linien hab ich jeweils nur die Punkte...

Ich hab mir hier zwei Beispiele angeschaut aus denen ich nicht so recht schlau werde:
http://matplotlib.sourceforge.net/examp ... _demo.html und
http://matplotlib.sourceforge.net/examp ... _demo.html

Ich hab mir die Testdaten aus Beispiel 1 mal angeschaut und muss zugeben, ich verstehe sie nicht, bzw hab ich keine Idee wie ich diese Daten für meine Koordinaten erstellen könnte.
Gibt es da in numpy Funktionen die mir die richtigen Arrays konstruieren würden? Ich bin leider nicht fündig geworden.

Hoffe jemand kann mir helfen, vielen Dank.

Re: 3D Flächen und Linien mit numpy und matplotlib

Verfasst: Dienstag 1. Juni 2010, 14:26
von würmchen
Hm, ich denke ich habe etwas gefunden, was mir helfen könnte, aber ich verstehe nicht wie man es benutzen muss...

class mpl_toolkits.mplot3d.art3d.Poly3DCollection(verts, *args, **kwargs)

http://matplotlib.sourceforge.net/mpl_t ... d/api.html

Hier soll man angeblich 3d verts angeben können aber das funktioniert irgendwie nicht wie ich mir das vorstelle

Code: Alles auswählen

from mpl_toolkits.mplot3d import axes3d
from mpl_toolkits.mplot3d.art3d import Poly3DCollection
import matplotlib.pyplot as plt

fig = plt.figure()
ax = axes3d.Axes3D(fig)
poly = Poly3DCollection((zip(1,2,3),zip(2,3,5),zip(3,4,5)))
ax.add_collection3d(poly)
plt.show()
Ich muss zugeben dass ich teilweise nicht so recht verstehe was ich hier mache... :-) vielleicht ist dadurch auch alles falsch :-) Aber vielleicht hat jemand hier eine Idee was mir helfen kann.

Re: 3D Flächen und Linien mit numpy und matplotlib

Verfasst: Dienstag 1. Juni 2010, 15:29
von würmchen
Ok, ich habe es hinbekommen nach vielem suchen und probieren...

Code: Alles auswählen

from mpl_toolkits.mplot3d import axes3d
from matplotlib.collections import PolyCollection
from mpl_toolkits.mplot3d.art3d import Poly3DCollection as p3dc
import matplotlib.pyplot as plt
import numpy as np

a = (1,2,4)
b = (2,3,3)
c = (3,2,3)

fig = plt.figure()
ax = axes3d.Axes3D(fig)
poly = p3dc([[a,b,c]])
ax.add_collection3d(poly)
ax.set_xlim3d(0,10)
ax.set_ylim3d(0,10)
ax.set_zlim3d(0,10)


plt.show()