Kategorie-Archiv: Allgemein

Mit Python Grafik drehen

Bedarf für Anwendung

Gnuplot ist ein mächtiges Programm zur Analyse und Visualisierung statistischer Daten,
welches direkt aus Emacs Org-mode heraus mit Anweisungen in Plaintext bedient werden kann.

Leider bietet Gnuplot von Haus aus nicht die Möglichkeit zur Ausgabe vertikaler
Balkendiagramme an. Balken werden nur horizontal, also nebeneinander auf der x-Achse
angeordnet. Diese Darstellungsform reicht nicht aus, insbesondere dann nicht, wenn man
Geschäftsgrafiken nach professionellen Standards erstellen will, wie sie beispielsweise
Edward R. Tufte1 oder fortführend Holger Gerths und Rolf Hichert2 aufstellten.

Balken auf der horizontalen x-Achse angeordnet werden danach nur für zeitliche Abläufe
eingesetzt. Die x-Achse ist ein Zeitstrahl. Eine andere Verwendung – etwa vergleichende
Balken für Daten von Subgruppen – ist auf horizontaler Ebene nicht gestattet. Solche
vergleichende Darstellungen ohne Zeitbezug sind ausschließlich vertikal, also an der
y-Achse übereinander angeordneten Balken vorbehalten.

Die Lösung: Balkendiagramm um 90 Grad drehen

Ein Diagramm mit vertikal angeordneten Balken erhält man im Grundsatz, indem man ein
Diagramm mit horizontaler Balkenanordnung einfach um 90 Grad nach links oder rechts
dreht. Mit so einer Drehung des gesamten Diagramms kippen allerdings auch die
Beschriftungen um 90 Grad auf die Seite. Damit die Ansicht wieder stimmt,. muss man also
vorher die Beschriftungen (zurück-)drehen. 90 Grad nach links und dann 90 Grad nach rechts
gekippt, ergibt effektiv 0 Grad Drehung.

Dieses Drehen der Beschriftungen lässt Gnuplot intern zu. Ich zeige in meinem Artikel
,,Umsatztabelle plotten mit Balken“ einige Beispiele dazu auf.

Schwieriger wird es dann mit dem Drehen des Balkendiagramms als Ganzes. Gnuplot selbst
kann das nicht, zumindest habe ich in der Literatur und im Netz dazu keine Hinweise
gefunden.

Grundsätzlich bieten sich in Org-mode zwei Konzepte zur Umgehung an: Möglichkeit 1 besteht
darin, dass man die mit Gnuplot erzeugten und gespeicherten Balkendiagramme unverändert
lässt und erst beim Export der Org-mode Datei in die Ausgabeformate PDF bzw. HTML
dreht. Exportiert man nach PDF, ist über LaTex mit dem Befehl #+ATTR_LATEX: :options
angle=90
möglich. Will man dagegen nach HTML exportieren, bleibt dieser Latex-Befehl
,,angle=90“ wirkungslos. Man könnte dann sicher mit CSS etwas machen, was die Sache
allerdings weiter verkompliziert. Vor allem wirkt nachteilig, dass dann der
Pogrammcode in Org-mode auseinanderfällt. Man müsste dann für jedes Format eine
eigene Ausgaberoutine schreiben, einmal mit LaTeX (PDF-Export) und einmal mit CSS
(HTML-Export). Von der ursprünglichen Universalität von Org-Mode bliebe nicht viel übrig.

Ich favorisiere deshalb einen anderen Ansatz: Dieser besteht darin, das jeweils in Gnuplot
erzeugte Balkendiagramm mit horizontale Ausrichtung mit einem anderen Programm zu öffnen,
zu drehen und dann erneut abzuspeichern. Wenn dann dieses bereits gedrehte Diagramm mit
vertikal angeordneten Balken in Org-mode geladen wird, muss es nicht noch einmal gedreht
werden, sondern kann so (gedreht), wie es ist, ohne weitere Eingriffe exportiert werden,
als PDF oder als HTML.

Diagramme drehen mit Python

Es gibt eine ganze Reihe von Programmen, mit denen man Grafikdateien öffnen, die
geöffneten Grafiken drehen und schließlich wieder speichern kann. Jedes Grafikprogramm
kann das. Das Problem dabei ist, dass dann die durchgehende Steuerung der Ausgabe aus
Org-mode heraus unterbrochen wird. Man müsste dann in Org-Mode ein Programm zur
Datenanalyse bis zur Diagrammerstellung ausführen, dann ein externes Programm starten, in
dem die Grafik gedreht wird, und dann wieder Org-mode starten, um die gedrehten Grafiken
als HTML oder PDF zu exportieren. Auch dieser Weg erscheint zu umständlich.

Die Alternative dazu wäre die Nutzung eines Programms, welches wie Gnuplot auch direkt aus
Org-mode heraus aufgerufen und ausgeführt werden kann. Python ist dazu in der
Lage. Folgender Workflow zur durchgängigen Erstellung vertikaler Balkendiagramme in
Org-Mode folgt daraus:

  1. Datenanalyse mit Anlage und Speicherung eines horizontal angeordneten Balkendiagramms
    mit ggf. gedrehten Beschriftungen und angepassten Diagrammgrößen in Gnuplot
  2. Öffnen, Drehen und erneutes Speichern dieses dann vertikal angeordneten Balkendiagramms
    in Python
  3. Einlesen dieses gedrehten Balkendiagramms in Org-mode für den Export in HTML bzw. PDF

Python-Paket ,,Pillow“

Python benötigt zur Ausführung grafischer Optionen die ,,Image Library Pillow“. Diese
muss einmalig installiert werden. Unter Mac OS X 10.11.2 waren dazu im Terminal-Fenster
folgende Befehle erforderlich:3

Terminal:

~ user$ sudo pip install pillow
Password: ******
~ user$ sudo su
SH-3.2# easy_install pip
SH-3.2# xcode-select --install
SH-3.2# pip install --no-index -f http://dist.plone.org/thirdparty/ -U PIL

Python starten:

SH-3.2# Python
>>> from PIL import Image

Jetzt ist das Image-Paket von Python einsatzbereit. Es folgt die Drehung einer Grafik als
Beispiel:

>>> im1 = Image.open("Umsatztabelle27.png")
>>> im1.show()
>>> im2=im1.rotate(270)
>>> im2.save("Umsatztabelle27gedreht.png")
>>> im2.show()

Linkempfehlungen:

 Fußnoten:

1 Edward Tufte: The Visual Display of Quantitative Information. 2001.

2 Rolf Hichert Holger Gerths: Geschäftsdiagramme mit Excel nach den SUCCESS-Regeln  gestalten. 2013.

3 Eine Installation von XCode ist Voraussetzung und muss vorher ggf. ausgeführt werden.

Spams ohne Ende! Schränke Kommentarfunktion ein! Wie Sie dennoch kommentieren können.

Liebe Besucher meiner Homepage,

die letzten Monate war ich total in Entwicklungsarbeiten eingespannt, über die ich noch berichten werde. Mir fehlten Zeit und Aufmerksamkeit für meinen Blog.

Heute nun loggte ich mich nach längerem wieder auf meiner eigenen Hompage ein. Sagenhaft, was ich dabei feststellen musste: Obwohl ich keine Beiträge veröffentlichte wurden mir 6.085
(sechtausendfünfundachtzig!) Kommentare gepostet.

Alles Spams! Nur Mist, aus aller Welt: beispielsweise Schwachsinn aus Idaho und Los Angeles, oder Viagrawerbung aus Saudi-Arabien. Wer das noch nicht gesehen hat, dem gebe ich zur Kostprobe unten ein paar kürzere Beispiele wieder. Offenbar operieren hier weltweit irgendwelche Witzbolde, die nichts besseres zu tun haben, als die Internetseiten anderer maschinell zu hacken und vollzumüllen. Das konterkariert die Idee und die Möglichkeiten des ,,World Wide Web“!

Ich muss auf diese Angriffe reagieren. Deshalb schalte ich alle öffentlich frei zugänglichen Kommentarfunktionen auf meiner Internetseite ab. Zum Glück gibt es im Internet nicht nur Bösewichte, sondern auch Hilfe, wie man so eine Sperre in WordPress technisch lösen kann, beispielsweise hier oder hier.. Ich will das Problem damit an der Wurzel packen und verzichte auf irgendwelche Tools zur Spamabwehr, bei denen man doch immer wieder manuell nachsorgen muss, weil sie nicht alle Spams erwischen.

Selbstverständlich bin ich weiterhin an ,,echten“ Wortmeldungen zu den Themen meiner Beiträge interessiert. Schreiben Sie mir am besten ein paar Zeilen, über meine Kontaktseite als E-Mail oder gern so richtig auf Papier per Briefpost.

Im Gegenzug schicke ich Ihnen dann einen Zugangscode, mit dem Sie sich auf meiner Homepage einloggen können. Als angemeldeter Besucher steht Ihnen dann die Kommentarfunktion wieder zur Verfügung.

Vielen Dank!

Weiterlesen ..