3D Flächen und Linien mit numpy und matplotlib

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

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.
Zuletzt geändert von Leonidas am Dienstag 1. Juni 2010, 17:19, insgesamt 2-mal geändert.
Grund: gelöst-Markierung entfernt
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

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.
würmchen
User
Beiträge: 255
Registriert: Mittwoch 7. November 2007, 14:17

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