Bilder des Song–Graphen¶
Allgemeine Hinweise
Folgende visuelle Aspekte sind mit Informationen besetzt:
- Kantenfarbe: Rote Farbe indiziert eine hohe Distanz. Grün eine mittlere Distanz (etwa \(0,5\)). Blau bis violett eine gute bis sehr gute (\(0,1\) bis \(0,0\)). Rote Kanten sieht man in der Praxis selten, da in den meisten Fällen immer ein guter Nachbar gefunden werden kann.
- Kantendicke: Zur optischen Untermalung variiert die Dicke der Kanten je nach Distanz. Hohe Distanzen bekommen eine dünnere Kante.
- Knotenfarbe: Zeigt grob die ,,Zentralität" des Knotens an. Bietet lediglich eine optische Navigationshilfe um auf Cluster hinzuweisen.
- Der visuelle Abstand zwischen zwei Knoten, hat keine Aussagekraft, auch wenn ähnliche Knoten oft nah beieinander liegen.
Die Abbildungen bis und bis zeigen den Aufbau des Graphen, anhand von linearen und pseudozufälligen generierten Testdaten mit jeweils 100, beziehungsweise \(200\) Knoten. Abbildung zeigt einen realen, praktischen Graphen, mittlerer Größe mit \(666\) Knoten. Die Liedtitel wurden jeweils an die Knoten geschrieben.
Bei den linearen Testdaten werden die Zahlen von \(100\) bis \(1\) absteigend jedem neuen Knoten gegeben. Das Resultat sollte im optimalen Fall daher eine Kette von Knoten zeigen, deren Knotennummer von einem Ende zum anderen immer weiter steigt. Die pseudozufälligen Testdaten mischen die erwähnten linearen Daten, mit zusätzlichen, zufällig erscheinenden Daten gleicher Anzahl. Diese sind zum größten Teil auf den Bereich 25–75 aufgeteilt. Es sollte ein Graph entstehen, der ähnlich linear ist, aber in der Mitte eine ,,Verdichtung" aufweist. Beides sind Testdaten, die häufig zum Testen von libmunin genutzt worden sind, da sie spezielle Extremfälle gut testen. Die linearen Testdaten sind bereits nach der Basisiteration einsetzbar. Die linearen Enden der pseudozufälligen Daten, werden mit jeder Iteration klarer. Im Vergleich zu rebuild_stupid fällt hier auf, dass rebuild zur Bildung von mehr Kanten neigt.
Plotting der Graphen
Alle Graphen in diesem Teil des Anhang, sind mithilfe des freien Python–Graphenframeworks igraph [Link–23] entstanden. Als Zeichenbibliothek nutzt igraph die freie 2D–Zeichenbibliothek cairo [Link–24]. Der verwendete Layouting–Algorithmus ist ,,Fruchtermann–Reingold".
Bilder des Genregraphen¶
Der Vollständigkeit halber, wird hier auch eine Visualisierung des Genrebaums gezeigt. Daraus kann man zwar keine ,,neuen Erkenntnisse" ziehen, doch kann er in der weniger detaillierten Version zumindest als Überblick über die einzelnen Genres dienen. Die detailliertere Version führt einem vor Auge, wieviel einzelne Musikgenres mit der Zeit entstanden sind. Die Graphen wurden mit dem freien Graphenvisualisierungspaket Graphviz [Link–25] generiert. Das Vorgehen soll hier dokumentiert werden.
Folgendes erstellt die Graphviz–Eingabedatei.
$ pwd
~/dev/libmunin
$ export PYTHONPATH=$PYTHONPATH:.
$ python "munin/provider/genre.py" --cli --plot 0,0 # Detailstufe: 0,0 = max.
$ head -n8 "/tmp/genre.graph"
graph {
overlap=prism3000; overlap_scale=-7; splines=curved
edge [color="#666666"]
node [shape="none", style="rounded, filled", fillcolor="..."]
"music" -- "rock"
"music" -- "pop"
// ...
}
Daraus kann man dann, mittels Graphviz–Bordmitteln, den Graphen in verschiedenen Formaten rendern. Hier die Prozedur für ein PDF:
$ sfdp /tmp/genre.graph | \ # Layoutting der einzelnen Nodes.
gvmap -e | \ # Einzeichnen der "Länderflächen".
neato \ # Eigentliches Zeichnen.
-Ecolor="#55555555" \ # Farbe der Kanten.
-Nfontname="TeX Gyre Adventor" \ # Font für die Nodelabels.
-Tpdf \ # Ausgabeformat.
> graph.pdf # Ausgabedatei.
$ pdf-viewer graph.pdf # Fertiges Bild.
Anmerkung: Die einzelnen ,,Länder" beziehungsweise Cluster im Graphen dienen lediglich der optischen Trennung. Die Farbsättigung der Knoten und die verwendete Größe der Schrift weist auf die Menge der Kinder hin, die der Knoten hat. Je weiter weg der Knoten vom Wurzelknoten entfernt ist, desto oranger wird er (von rot beginnend).
Medien¶
Der Vollständigkeit halber werden hier noch die für libmunin erstellten Logos abgedruckt. Abbildung dient dabei eher als Logo für eigene Zwecke, während das Emblem unter von Anwendungsentwicklern genutzt werden kann, um auf den Gebrauch von libmunin in ihren Anwendungen hinzuweisen.
Die Grafiken wurden mit dem freien Vektorzeichenprogramm Inkscape [Link–26] erstellt und können auf der API–Dokumentation heruntergeladen werden: [Link–27].