Vor einigen Tagen las ich über MayaVi, eine freie (BSD-Lizenz) Visualisierungsbibliothek in Python, die auch als Standalone-Umgebung (siehe Screenshot unten) funktioniert.
Doch zuerst einmal muß das Teil installiert werden. Erfreulich war, daß conda
, der Paketmanager meines Anaconda-Pythons MayaVi kannte, enttäuschend dann aber, daß er beim naiven Versuch einer Installation mit Fehlermeldungen und Vrsionskonflikten die installation abbrach. Eine Nachfrage mit der Suchmaschine meines Vertrauens brachte, daß MayaVi nicht wirklich mit Python 3 funktioniert. Einige Suchtreffer berichteten zwar von Installationserfolgen, die Anleitungen dazu waren aber so obskur, daß ich lieber darauf verzichtete.
Aber ich hatte ja noch eine (virtuelle) Anaconda-Python-2.7-Installation, die ich mir in der Hauptsache für Experimente mit PyGame und VPython eingerichtet hatte. Mit PyGame spiele ich momentan nicht (mehr) und VPython läuft mittlerweile auch mit (Anaconda-) Python >= 3.5, so daß sie eigentlich ungenutzt auf meinen Festplatten herumlag. Und sie da, mit
source activate python2
conda install mayavi
verlief die Installation ohne Probleme. Die Standalone-Version läßt sich dann innerhalb dieser Umgebung im Terminal mit einem simplen
mayavi2
aufrufen.
Aber ich wollte MayaVi ha eigentlich als stinknormales Python-Paket in einem Python-Skript aufrufen. Und so habe ich mit dem Beipsielprogramm aus dem (englischen) Wikipedia-Artikel zu MayaVi experimentiert und folgendes kleine Skript abgetippt:
# -*- coding: utf-8 -*-
# Muß mit Anaconda-Python 2.7 starten!!!!!
# Beispielprogramm nach dem Wikipedia-Artikel zu Mayavi <https://en.wikipedia.org/wiki/MayaVi>
import numpy as np
from mayavi import mlab
from scipy.special import sph_harm
# Mit diesem Werten kann gespielt werden:
l = 3
m = 0
# --------------------------------------
theta_ld = np.linspace(0, np.pi, 91)
phi_ld = np.linspace(0, 2*np.pi, 181)
theta_2d, phi_2d = np.meshgrid(theta_ld, phi_ld)
xyz_2d = np.array([np.sin(theta_2d)*np.sin(phi_2d),
np.sin(theta_2d) * np.cos(phi_2d),
np.cos(theta_2d)])
Y_lm = sph_harm(m, l, phi_2d, theta_2d)
r = abs(Y_lm.real)*xyz_2d
mlab.figure(size = (700, 830))
mlab.mesh(r[0], r[1], r[2], scalars = Y_lm.real, colormap = "cool")
mlab.view(azimuth = 0, elevation = 75, distance = 2.4, roll = -50)
mlab.savefig("images/Y_%i_%i.jpg" % (l, m))
mlab.show()
print("I did it, Babe!")
Die erste Zeile mit dem # -*- coding: utf-8 -*-
muß unbedingt mitgegeben werden, sonst können keine Sonderzeichen wie Umlaute oder das »ß« in Kommentaren stehen. Außerdem muß man natürlich – wie hier für TextMate beschrieben – seinem Editor mitteilen, daß man nun mit Python 2.7 arbeitet. Ansonsten zeichnet das Programm einfach eine Kugelflächenfunktion, die mit den Parametern l = 3
und m = 0
eben eine Form annimmt, die an einen Babyschnuller erinnert. Experimentiert einfach mal mit diesen Parametern, wenn Ihr zum Beispiel beie auf 0
setzt, zeichnet das Skript eine simple Kugel.
Weitere Variationen findet Ihr, wenn Ihr mit der colormap
herumspielt. Eine Liste der möglichen Farbtabellen findet Ihr in der Dokumentation.
Auf jeden Fall macht MayaVi auf mich einen ziemlich guten Eindruck. Wenn ich genügend Zeit finde, werde ich noch weiter ein wenig damit experimentieren. Still digging!
Die Dokumentation zu MayaVi gibt es hier (sowohl für die Apllikatioon wie auch für MayaVi in Python-Skripten) und sie ist recht umfangreich.
Über …
Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!
Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.
Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.
Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes
von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.
Werbung