dl044: datenvisualisierung mit ggplot
Unsere Reihe zum Thema Datenvisualisierung geht weiter! Wir reden über ggplot, das ist nämlich ein nützliches Tool, um Graphen mit der Programmiersprache R zu erstellen. Am Anfang geht es um das Buch "Grammar of Graphics" und die darin vorgestellten Prinzipien für das Erzeugen von Plots. Danach erläutert Helena, wie sich diese Prinzipien in der Arbeit mit ggplot angewendet werden. Und dann gehen wir auch mit Beispielen ein bisschen konkreter auf einzelne Sachen ein, die dabei eine Rolle spielen. Und zum Schluss wollen wir noch ein bisschen die Vor- und Nachteile abwägen.
Links und Quellen
- datenleben
- www.datenleben.de
- Social Media: Mastodon @datenleben@podcasts.social
- YouTube: @datenleben
- Erwähnte datenleben-Folgen
- Einspieler
- Leland Wilkinson: Grammar of Graphics. 2. Auflage, Springer (Berlin, Heidelberg)
- ggplot2: Elegant Graphics for Data Analysis (3e)
- Wikipedia: Tableau Software
Schlagworte zur Folge
Programmieren, R, ggplot, ggplot2, tidyverse, Datenvisualisierung, Datenanalyse, Daten visualisieren, Visualisierung
Beispiele in R mit ggplot2
In ggplot gibt es keine Funktion für ein Tortendiagramm. Stattdessen
erstellt man ein Balkendiagramm mit einem Balken, aber Farben für die
einzelnen Kategorien:
library(palmerpenguins)
library(ggplot2)
ggplot(penguins) + geom_bar(aes(x="", fill=species))
Und um das ganze in ein Tortendiagramm umzuwandeln wird nur das
Koordinatensystem auf Polar-Koordinaten umgestellt (also
Kreiskoordinaten):
library(palmerpenguins)
library(ggplot2)
# theta="y" heißt, dass der y-Wert der Kreisvariabeln zugeordnet wird
ggplot(penguins) + geom_bar(aes(x="", fill=species)) + coord_polar(theta="y")
Weil man dann die Kategorien zur Gruppierung verwenden kann, und dann
wird automatisch eine Legende erstellt:
library(palmerpenguins)
library(ggplot2)
library(tidyr)
penguins_long <- penguins %>%
tidyr::pivot_longer(
cols = ends_with("length_mm")
)
plot_long <- ggplot(penguins_long) + geom_point(aes(body_mass_g, value, color=name))
print(plot_long)
Es ist auch möglich zwei Ebenen im Plot zu erstellen bei ggplot, ohne
die Daten umzuformatieren, aber dann kann ggplot nicht selbst eine
Legende erstellen:
library(palmerpenguins)
library(ggplot2)
plot_wide <- ggplot(penguins) + geom_point(aes(body_mass_g, flipper_length_mm), color="darkgreen")
plot_wide <- plot1 + geom_point(aes(body_mass_g, bill_length_mm), color="darkviolet")
print(plot_wide)
Intro (00:00:00)
Thema des Podcasts (00:00:18)
Helena: Willkommen zur 44. Folge beim Datenleben Podcast, dem Podcast über Data Science. Wir sind Helena
Janine: und Janine
Helena: und möchten euch die Welt der Daten näher bringen. Was für Daten umgeben uns? Wie werden Daten für uns lesbar? Und was können wir aus ihnen lernen? Wer schon immer mehr darüber wissen wollte, ist hier richtig, denn diesen Fragen gehen wir nach.
Thema der Folge (00:00:37)
Janine: Und dieses Mal beschäftigen wir uns wieder mit dem Thema Datenvisualisierung, das wir hier ein bisschen weiterführen möchten. Und zwar soll es heute um ggplot gehen. Das ist nämlich ein nützliches Tool, um Graphen mit der Programmiersprache R zu erstellen. Und ja, dafür wird Helena gleich erstmal auf ein wunderbar grundlegendes Buch eingehen mit dem Titel "Grammar of Graphics". Da werden nämlich sechs grundlegende Prinzipien vorgestellt und davon gehen wir dann weiter zu ggplot und wie sich diese Prinzipien in der Arbeit mit ggplot, naja, erkennen und anwenden lassen. Und dann gehen wir auch mit Beispielen ein bisschen konkreter auf einzelne Sachen ein, die dabei eine Rolle spielen, also wie zum Beispiel verschiedene Datenformate ins Spiel kommen, was die verschiedenen Arbeitsschritte von ggplot sind, ob es eine Grafik tatsächlich angezeigt wird und zum Schluss wollen wir noch ein bisschen die Vor- und Nachteile abwägen, die ggplot so mit sich bringt.
Warum ist das Thema wichtig? (00:01:39)
Helena: Ja, und wir befassen uns mit diesem Thema, weil Datenvisualisierung ja ein wichtiges Thema ist, mit dem wir uns immer mal wieder auseinandersetzen. Deswegen befassen wir uns dieses Mal in der Folge mit einem sinnvollen Tool eben für Datenvisualisierung und zwar ggplot. Das verwende ich tatsächlich auch sehr viel beruflich und deswegen reden wir heute darüber.
Einspieler: Allgemein zum Thema (00:02:03)
Janine: Was ist R? R ist eine freie Programmiersprache, die eine der Standardsprachen für statistische Problemstellungen ist. Und sie wird in vielen Gebieten angewendet, besonders auch in der Wissenschaft. Mit R können nämlich statistische Berechnungen gemacht und dazugehörige Grafiken erstellt werden. Dabei hilft die relativ benutzer*innenfreundliche Entwicklungsumgebung namens RStudio, das auch anzuwenden. Ein großer Vorteil dieser Programmiersprache ist, dass nur wenige Zeilen Code notwendig sind, um recht komplexe statistische Probleme zu bearbeiten. Wofür R unter anderem eingesetzt werden kann, ist Datenvisualisierung, Umwandlung von Daten, Säubern von Datensätzen, Import von Daten aus verschiedenen Quellen und das Anwenden verschiedener statistischer Verfahren auf die vorhandenen Datensätze. Ein weiterer Vorteil ist, dass R kompatibel ist mit einer Reihe anderer Programmiersprachen. So können auch verschiedene Arbeitsschritte tatsächlich in anderen Programmen erledigt werden, die für bestimmte Teilaufgaben vielleicht besser geeignet sind. Oder umgekehrt, R wird nur für eine sehr spezielle Aufgabe in andere Anwendungen einbezogen. Es gibt eine große Menge von Paketen, die für R entstanden sind und zusätzliche Funktionen oder spezielle Anwendungsfälle unterstützen. Pakete sind hierbei Programmbibliotheken, die eben diese bestimmten Funktionen enthalten können. 29 Pakete sind standardmäßig in R enthalten, wenn es installiert wird, wovon 14 die grundlegenden Funktionsweisen bereitstellen und auch jedes Mal automatisch geladen werden, wenn R benutzt wird. Alle weiteren Pakete, die für einen bestimmten Zweck benötigt werden, werden auch nur dann mittels Code geladen, wenn sie auch tatsächlich eingesetzt werden, was das Ganze eben etwas schlanker macht. Was R zum Beispiel konkret kann, sind Zeitreihenanalysen, Glättungsverfahren, Clusteranalysen, Wahrscheinlichkeitsverteilungen, es unterstützt bei klinischen Studien und Metaanalysen. Die größte Sammlung an Paketen, die es für R gibt, ist die Comprehensive R Archive Network und darin sind derzeit fast 20.000 Pakete enthalten. Viele sind einem bestimmten Thema gewidmet oder erweitern bestehende Pakete um zusätzliche Funktionen. Darin kommen zum Beispiel Pakete vor wie DS4Psy, Data Science for Psychologists, also ein spezielles Thema für eine spezielle Gruppe von Menschen, dieses Paket wird wahrscheinlich alle Funktionen enthalten, die für genau diese Anwendung sinnvoll sein können. Es gibt aber auch so Sachen wie rTrack, Data Analysis Relating to Star Trek, das heißt, ja, warum nicht mal mit Daten von/aus über Star Trek beschäftigen. Und wie eben schon angedeutet, manche Pakete ergänzen auch bestehende Pakete, ein Paket ist ggplot und ein ergänzendes Paket ist aplot, das ja, ein mit ggplot gestaltete Grafik um weitere Informationen ergänzen kann. Es gibt aber auch Sammlungen von Paketen, die deutlich spezieller sind und schon mehrere enthalten, zum Beispiel das tidyverse. tidyverse ist eine Sammlung von R-Paketen, die die Anwendungen für Data Science Probleme deutlich vereinfachen, weil hier viele Pakete zusammenkommen, die eben bestimmte Schritte übernehmen können und Funktionen bereitstellen, die speziell für Data Scientists spannend sind. Darin ist zum Beispiel eben auch ggplot enthalten, ein Paket, das die Möglichkeiten für grafische Darstellung deutlich vergrößert.
Was steckt hinter Grammar of Graphics? (00:06:06)
Helena: Ja, und das gg in ggplot steht für Grammar of Graphics. Und das ist eigentlich der Titel eines Buches, das eben die von dir gerade schon genannten sechs grundlegenden Prinzipien einführt. Das ist ein Buch von Leland Wilkinson und der hat früher bei SPSS gearbeitet, was eines der großen Statistikprogramme ist, die es so gibt, mit denen viele Leute arbeiten, und der hat auch in der Software Tableau mitgewirkt, die auch innerhalb von Statistikmenschen eine gewisse Bekanntheit hat. Ja, und das Ganze startet erstmal damit, dass ein mathematischer Graph erstmal ein abstraktes Konstrukt ist. Also wir haben vielleicht noch irgendwie Kurvendiskussionen aus der Schule in Erinnerung oder sowas und hat man dann irgendwie einen Graphen, den man malt und dann kann man damit irgendwelche Dinge ausrechnen und so weiter. Und dieses abstrakte Konstrukt kann man erstmal nicht sehen, sondern erst wenn man daraus eine Grafik macht, wird das Ganze sichtbar. Das heißt, wir brauchen Datenvisualisierung, um irgendwas sichtbar zu machen. Und die Idee bezüglich dieser Grundprinzipien ist halt, ja, Grafiken zu statistischen Daten sollen bestimmten Regeln folgen. Man kann zum Beispiel nicht einfach irgendeinen Punkt irgendwo hinmalen und die Position von diesen Punkten verändern, ohne dass man über die Daten lügen würde. Das heißt, man möchte schon, dass das, was man darstellt, auch akkurat ist auf Basis der Daten und nicht einfach irgendwas ist. Und deswegen besteht eben jede Grafik bei Grammar of Graphics aus sechs grundlegenden Komponenten und die erste davon sind einfach die Daten. Das heißt, jede Grafik muss erstmal auf Basis von Daten erzeugt werden. Dann gibt es sogenannte statistische Transformationen der Daten. Also, wenn ich zum Beispiel die Häufigkeiten von bestimmten Ereignissen in einem Histogramm darstellen möchte, muss ich diese Häufigkeiten erstmal berechnen. Das heißt, auf Basis der Daten berechne ich Dinge, die dann dargestellt werden. Ein anderes Beispiel, das wir auch schon in vergangenen Folgen hatten, ist der Boxplot. Auch das basiert erstmal darauf, dass man eine statistische Auswertung macht auf Basis der Daten und diese dann darstellt.
Janine: Wir hatten da ja in der einen Folge drüber geredet und ich erinnere mich jetzt so an dieses Stichwort "abgeleitete Werte". Also, aus der statistischen Transformation fallen dann vielleicht auch unter Umständen neue Werte raus, die dargestellt werden.
Helena: Das ist die Frage, was du mit "neuen Werten" meinst.
Janine: Ja, also halt die statistische Transformation vollzieht so eine Art Berechnung und dabei entstehen halt Ergebnisse und die werden mit einbezogen.
Helena: Genau, oder nur diese Ergebnisse werden überhaupt dargestellt. Die basieren immer noch auf den Daten, aber ja, ist halt die Frage, wie man diese Daten darstellen will. Genau, das dritte grundlegende Prinzip ist, mit welchen Skalen man diese Daten darstellt, also zum Beispiel ob sie linear geplottet werden oder logarithmisch. Dann Koordinatensysteme, also zum Beispiel kathesische Koordinaten versus Polarkoordinaten. Dann, das fünfte Prinzip, sind die grafischen Elemente und ihr Aussehen. Also erstmal die Frage, malt man überhaupt Punkte oder Linien? Welche Farben haben die? Welche Formen? Also ein Boxplot hat ja eine bestimmte Form im Gegensatz zu einem Punkt. Ein Punkt hat auch eine bestimmte Form und eine Linie kann ja auch gestrichelt sein zum Beispiel. Und dann gibt es als sechstes Prinzip noch die Orientierungshilfen, die in einer Grafik enthalten sein sollen. Und damit ist gemeint sowas wie die Achsen, die Beschriftung, die Legenden, die dann sagen, ja, diese Punktform bedeutet folgendes oder diese Farbe bedeutet folgendes und so weiter. Ja, und dann basiert das Bearbeiten einer Grafik aus vier Grundprinzipien, nämlich erstmal die Spezifikation, bei der man sagt, was für einen Plot man haben will. Dann das Zusammensetzen all dieser Sachen zu einem Gesamtkonstrukt. Dann das Anzeigen der Grafik, also zum Beispiel, wenn man jetzt irgendwie eine Bilddatei generieren möchte oder dass es auf dem Computerbildschirm dargestellt wird. Und das vierte ist dann das Überarbeiten. Das heißt, im Prinzip ist das so eins, das alle drei anderen umfasst, indem man dann sagt, man hat jetzt ein Ergebnis gesehen und fängt an, es wieder zu modifizieren, indem man ein bisschen eine Spezifikation ändert zum Beispiel. So, das Überarbeiten ist jetzt nicht unbedingt für jede Grafik nötig, wenn man schon vorher genau sich ein Kochrezept ausgedacht hat für eine Grafik. Aber es ist relevant, es eben als Grundprinzip noch mit aufzunehmen, weil das Überarbeiten einer Grafik soll ja auch einfach sein. Und da gibt es halt auch einige Tools, wo man erstmal etwas, wenn man etwas hingemalt hat, dann wird es schwer, das wieder zu ändern. Deswegen ist es schon ein mitzudenkender Aspekt.
Janine: Und auch nicht verkehrt hinsichtlich von Fehlerkorrekturen, glaube ich. Also wenn ich jetzt an Audioschnitt oder Videos erstellen denke, das erste, was man exportiert, das erste Ergebnis ist nie das finale.
Helena: Ja, genau. Das heißt, man hat dann einmal angezeigt und dann sieht man, ah, da will ich aber noch was ändern. Und dann ist es gut, wenn es leicht ist, das zu ändern. Ja, das waren jetzt eben diese vier Schritte quasi, Spezifikation zusammensetzen, anzeigen und überarbeiten. In der Regel hat man in den meisten Fällen wahrscheinlich, und das ist auch bei ggplot nicht anders, eher damit zu tun, dass man eher spezifiziert. Und zusammensetzen und anzeigen passiert beides so im Hintergrund. Darüber reden wir später aber nochmal genau. Warum es trotzdem unterschiedliche Schritte sind.
Janine: Ja, ich versuch's nochmal ganz kurz zusammenzufassen, was diese sechs Prinzipien oder Grundlagen sind. Also in Frageform, erstens, welche Daten liegen vor? Zweitens, welche statistische Transformation möchte ich mit den Daten vollziehen? Drittens, wie soll die Skala für die Darstellung aussehen? Viertens, welches Koordinatensystem kommt zur Anwendung? Fünftens, wie setze ich die grafischen Elemente ein und gestalte sie? Und sechstens, welche Orientierungshilfen wie Achsen oder Legenden möchte ich anwenden? So, das sind die Prinzipien. Und wie funktioniert das jetzt mit ggplot?
Wie funktioniert ggplot? (00:12:27)
Helena: Ja, ggplot, beziehungsweise ggplot2, wie das eigentlich genauer heißt. Wobei mir ehrlich gesagt nicht bekannt ist, wo die 2 herkommt. Weil ich habe noch nie mit ggplot ohne 2 gearbeitet, aber gut. Ja, ggplot ist ein Programmpaket für R, um ja eben diese Prinzipien von Grammar of Graphics umzusetzen. Dabei orientiert es oder fokussiert es sich vor allem auf statistische 2D-Grafiken. Das heißt, in dem Buch selber wird das Ganze auch für dreidimensionale Grafiken diskutiert, aber mit ggplot lassen sich nur 2D-Grafiken darstellen und erzeugen. Ja, das Schöne an ggplot ist eben, dass es mit sehr guten Standardeinstellungen kommt. Das heißt, wenn man nicht so viel spezifiziert, dann hat man schon mal einen sehr guten Plot. Also zum Beispiel ist der Hintergrund immer eher grau und die Linien in dem Plot, also die Hilfslinien sind dann so weiß, sodass diese nicht von den eigentlichen Daten ablenken, aber gleichzeitig, wenn man das Ganze auf zum Beispiel auf einer Konferenz vorstellt, wenn man auf einem sehr hellen Beamer einen Vortrag hält, strengt es die Augen nicht so sehr an, weil es kein weißer Hintergrund ist, sondern eben ein leicht grauer Hintergrund. Wenn man das nicht mag, kann man das natürlich ändern. In meiner Erfahrung kam das bei Leuten, die das nicht gewohnt waren, dass das ja auch so aussehen könnte, manchmal nicht so gut an, wenn man alte Tools gewohnt war, aber ja.
Janine: Gewohnheiten.
Helena: Ja, Gewohnheiten. Und die Umsetzung der Grundprinzipien können wir mal im Beispiel des Boxplots beschreiben. Also es gibt die sogenannten Geometrien in ggplot. Die fangen wir mit "geom_" an. Das ist dabei, was wir vorhin als grafische Elemente hatten als Grundprinzip, die beschreiben, wie etwas aussehen soll. Also ein Boxplot ist halt eine Box mit bestimmten Linien und eine Linie ist eine Linie und ein Punkt ist ein Punkt. Beziehungsweise können dann natürlich noch verändert werden. Aber da gibt es ganz viele Sachen von. Und für Boxplot und Histogramm zum Beispiel, die wissen dann auch in der Regel, dass man bestimmte statistische Transformationen machen will. Deswegen werden die automatisch, wenn man diese Geometrie Boxplot auswählt, auch automatisch berechnet. Das muss man nicht mehr machen und explizit sagen. Man kann es aber ändern. Man kann eben auch sagen, ja, er soll jetzt aber meine eigene Funktion, die ich selber geschrieben habe, für den Boxplot verwenden.
Janine: Und wer das sich gleich nebenbei mal angucken möchte, wir haben auch Beispiele vom R-Code in den Shownotes stehen. Da ist das auch mal drin, wie zum Beispiel geom_point dann definiert wird, im Code, was Helena eben gerade beschrieben hat, wie das aussehen soll und welche Eigenschaften das hat.
Helena: Genau. Dann gibt es die sogenannten Aesthetics. Das ist letztlich, ja, welche Eigenschaften hat denn dieser Plot auf Basis der Daten. Also das ist quasi, wie die Daten auf bestimmte Dinge in dem Plot übersetzt werden. Eine Aesthetik kann zum Beispiel sein, welche Werte sind auf der x-Achse. Also, welche Spalte in den Daten beschreibt die x-Achse oder halt auch die y-Achse. Aber auch die Farbe. Und die Farbe hat dann wieder verschiedene Kategorien, weil eine Farbe kann eine Linienfarbe sein, aber auch eine Füllfarbe. Das heißt, man kann bestimmte Sachen, wenn man jetzt irgendwie ein Balkendiagramm hat, auch über die Linienfarbe darstellen, während man meistens eher mit der Füllfarbe arbeitet zum Beispiel. Und bei anderen Geometrien, wie zum Beispiel Linien oder Punkten, kann auch der Linientyp gemeint sein. Also gestrichelt, gepunktet oder eine durchgezogene Linie. Oder die Punktform kann auch verändert werden, dass man da stattdessen Xe hin macht. Und da haben halt diese Punktformen eine bestimmte Bedeutung auf Basis der Daten. Ja, ein Punkt, den ich gerade schon angerissen hatte, ist ja die Berechnung der Box beim Boxplot passiert innerhalb von ggplot. Das heißt, ich gebe nicht vorher schon die statistischen Werte rein, sondern es wird automatisch eine sogenannte stat-Funktion innerhalb der Geometrie aufgerufen. Eine Statistikfunktion, die jetzt einfach Standardeinstellungen hat für den Boxplot, aber man könnte das auch ändern. Und da ist dann natürlich schon mal eine Frage, warum soll das denn überhaupt so ein Grafiktool machen, diese statistischen Umwandlungen? Ja, zum einen müsste man Mehrschritte selber machen, wenn man vorher die selber ausrechnen möchte, um das darzustellen. Ja, und wenn man Mehrschritte machen muss, verliert man auch ein bisschen Flexibilität, wenn man den Plot bearbeiten möchte, weil dann muss man ja auch die Berechnung vorher verändern. Und wenn das Grafiktool selbst erst die Statistiken berechnen kann, dann lassen sich die selben Daten gleichzeitig auch für mehrere verschiedene Auswertungen darstellen. Da muss man nicht mehrere Auswertungen selber ausrechnen, sondern kann die einfach darstellen lassen. Und man behält die Verbindung zwischen den Eingangsdaten und dem, was dargestellt wird. Wenn man Zwischenschritte hätte, würde man diese Verbindung ja wahrscheinlich eher verlieren. Oder es wird zumindest schwerer nachvollziehbar, wo genau jetzt ein bestimmter Punkt herkommt. Und wenn man sich dann dem Skalenprinzip beschäftigt, also die Skalen als Grundprinzip von Grammar of Graphics, heißt dann im Boxplot zum Beispiel, dass ich auf der x-Achse als Skala einfach die verschiedenen Boxen haben will, was auch immer ich dann nutze als, ja, daraus möchte ich meine Gruppen berechnen, dann ist das die eine Skala und die andere wäre dann mit der y-Achse wahrscheinlich. Also man kann das natürlich auch switchen, aber potenziell die y-Achse stellt dann die eigentlichen Werte dar. Das sind dann einfach Zahlen in dieser Skala. Und ja, standardmäßig benutzen Boxplot bei ggplot als Koordinatensystem dann eben kathesische Koordinaten mit einer, ja, linearen Skala und...
Janine: Kannst du nochmal kurz sagen, was kathesisches Koordinatensystem bedeutet?
Helena: Das ist das Standardkoordinatensystem, was man typischerweise in der Schule gelernt hat, wenn man ein Koordinatensystem gelernt hat. Bei dem gilt zum Beispiel, dass Parallellinien sich nicht schneiden können, solche Dinge.
Janine: Ja, und du hattest vorhin noch, wenn wir jetzt schon beim Nachfragen sind, die Polarkoordinaten erwähnt. Was bezeichnet das?
Helena: Also es gibt sogenannte Kreiskoordinaten, die nennt sich dann eben auch Polarkoordinaten. Und da hat man dann eben, ja, den Abstand zum Mittelpunkt als eine Koordinate und den Drehwinkel, um auf diese eine Position zu kommen. Man kann im Prinzip mit Polarkoordinaten auch den gleichen zweidimensionalen Raum abbilden wie mit kathesischen Koordinaten. Also man kann die ineinander umrechnen ohne Probleme. Aber wenn man Polarkoordinaten benutzt, dann kann man halt einfach Dinge auf Kreise malen zum Beispiel. Und ein Beispiel, was wir aus unserem Alltag kennen, was jetzt in ggplot nicht drin ist, weil es dreidimensional ist, sind ja so Koordinatensysteme wie das, was bei GPS benutzt wird, das ja dann Zahlenwerte auf einer Kugel mappt. Da hat man bei einer Kugel hat man dann auch quasi zwei Koordinaten, die so einen Winkel darstellen. Das ist dann Längengrad und Breitengrad. Und die Höhe, was der Abstand zum Mittelpunkt der Kugel ist. Was man dann in der Regel nur als Höhe über Normal ull oder so hat. Weil das sind die Werte, mit denen wir auch wirklich sinnvoll arbeiten können. Aber das ist auch ein Koordinatensystem, was eben nicht kathesisch ist, weil auf einer Kugel gibt es keine parallelen Linien.
Janine: Okay.
Helena: Also zumindest nicht, wenn diese Linien auch Kreise sein sollen, also Vollkreise sein sollen.
Janine: Ja.
Helena: So gesehen.
Janine: Sehr gut, dann nähern wir uns weiter den Sachen. Ich habe noch eine letzte Frage an dieser Stelle. Ich habe mir die Frage gestellt, inwiefern sich überhaupt Skala- und Koordinatensystemen wirklich unterscheiden. Gehört das nicht irgendwo auch zusammen, weil man es immer zusammen sieht? Wie sieht das da aus? Warum wird da eine Unterscheidung gemacht?
Helena: Also zum einen kann eine Skala ja auch sowas wie Kategorien enthalten. Also zum Beispiel Parteien, wenn man Wahlergebnisse sich anguckt, dann ist die eine Skala, die Farbskala in der Regel, sind Kategorien. Das ist ja so gesehen jetzt nicht unbedingt eine Koordinate. Und dann gibt es eben noch, ja man kann das zum Beispiel von dem Tortendiagramm erklären. Ein Tortendiagramm gibt es in ggplot nicht. Warum nicht? Weil man sagt, ja in Grammar of Graphics kann ich einfach das Koordinatensystem ändern. Das heißt, ich mache einfach ein Balkendiagramm, wo ich einen Balken habe mit verschiedenen Farben, der dann zum Beispiel den Parteien entsprechen kann mit ihren Wahlergebnissen. Und dann sage ich, ja ich möchte das Ganze jetzt als Polarkoordinaten darstellen. Und dann muss ich nur noch sagen, ja welcher Teil der Koordinate entspricht dann welchen Werten. Und das, was vorher die y-Koordinaten waren in dem Balkendiagramm, wäre dann zum Beispiel die Kreis-, also die Winkelkoordinate. Ja, und dann habe ich ein Tortendiagramm. Also man sieht ja sofort, dass die Darstellung komplett anders aussieht, aber es ist halt bis auf das Koordinatensystem komplett identisch. Und die Skalen sind auch die gleichen. Weil die Werte, der Wertebereich ist ja quasi von 0 bis 100 Prozent. Also einmal den Kreis rum im Tortendiagramm und einmal bis 100 Prozent im Fall von dem Balkendiagramm. Das heißt, die Skala ist die gleiche, aber die Koordinaten, auf denen das dargestellt wird, ist eben anders.
Janine: Und am Ende ist nur die Frage, wie möchte ich es anzeigen?
Helena: Genau. Und manchmal werden Dinge auch leichter auszurechnen. Also das geht jetzt vielleicht von ggplot weg. Aber jetzt so, der Grund, weshalb wir eben mit Kugelkoordinaten arbeiten, wenn wir mit GPS arbeiten, liegt halt daran, dass, ja das sieht dann so aus, als hätten wir Koordinaten, die auf einer 2D-Fläche sind, wenn wir uns nur die Kreiskoordinaten angucken. Wenn man jetzt mit kathesischen Koordinaten arbeiten würde, dann würden die sich ja die ganze Zeit ändern und man würde nicht verstehen, was das mit der eigenen Bewegung zu tun hat, weil die Zahlen dann völlig abstrakt wären. Also deswegen wird es oft einfacher für manche Fragestellungen in bestimmten Koordinatensystemen zu denken.
Janine: Das kann ich nachvollziehen. Ja, genau zu diesen Sachen sehe ich, hast du auch die Beispielcodes gemacht zum Tortendiagramm und dem Koordinatensystem auf Polarkoordinaten einmal umgestellt, oder beziehungsweise andersrum.
Helena: Genau, das findet sich dann auch in den Shownotes.
Was muss ich zu Datenformaten und ggplot wissen? (00:23:25)
Janine: Wenn ich jetzt daran gehen möchte, so etwas anzuwenden, dann brauche ich ja vor allem erst mal eins, die Daten, mit denen ich arbeiten möchte. Ja, wir hatten ja schon in früheren Folgen, ich weiß gar nicht mehr in welcher, ich glaube, das war in der Frauenlesen-Folge, wo wir einmal die Datenformate long und wide erklärt haben. Ja, aber irgendwann in unserem Podcast habe ich schon gelernt, dass es verschiedene Datenformate gibt. Wenn ich jetzt ggplot benutzen möchte, was muss ich denn da beim Datenformat beachten?
Helena: Ja, also grundsätzlich möchte ggplot das sogenannte long Datenformat haben. Und zwar, weil wir hatten ja schon über die Ästhetics geredet, also dass die Farbe zum Beispiel bestimmt werden kann aufgrund einer Gruppenzugehörigkeit. Und dazu muss man eine eigene Spalte haben, die man ggplot dann mitteilen kann, die eben diese Gruppenzugehörigkeit darstellt. Und wir können das Ganze ja mal an unserem Lieblingsbeispiel erläutern, an den Pinguinen. Wir hatten ja schon mal über den Pinguindatensatz geredet, den man in R verwenden kann, um Beispiele zu zeigen. Das tun wir jetzt auch hier. So, in diesem Datensatz hat ein Pinguin eine Spezies, dann sowas wie eine Schnabellänge, Körpergewicht und eine Flossenlänge. Und es ist jetzt relativ üblich, dass man sagt, jeder Pinguin hat genau eine Zeile. Daten, die zu einem Pinguin gehören, sind dann in einer Zeile. Und das wäre jetzt das sogenannte "wide", also breite Datenformat. Mit sehr wenig Einträgen ist jetzt, warum das eine breit und das andere lang heißt, vielleicht nicht ganz so offensichtlich, aber ich hoffe, es ist gleich offensichtlich, warum das andere lang heißt. Gut, wenn ich jetzt in ggplot die Schnabellänge über dem Körpergewicht plotten möchte, dann lässt sich das ja relativ gut verwenden, weil es gibt einmal die... eine Körpergewichtsspalte und die Schnabellängesspalte. Aber was ist, wenn ich jetzt sowohl Schnabellänge als auch Flossenlänge im selben Plot haben möchte? Dann würde man in vielen anderen Plottools einfach die beiden Spalten auswählen und sagen, ja, ich möchte die jetzt einfach über dem Körpergewicht geplottet haben. Und in ggplot ist das nicht so einfach. Man könnte das zwar im Prinzip machen, würde dann aber einige der Features von ggplot verlieren. Und deswegen müsste man in ggplot jetzt die Daten umformatieren. Und zwar so; Körpergewicht bleibt da immer noch eine eigene Spalte und dann hätte man eine Spalte in der, die nennt sich dann zum Beispiel "Kategorie", wo dann eben die Kategoriennamen drin stehen, also Flossenlänge und Schnabellänge und in der anderen Spalte der Wert. Dann hat man statt den ersten drei Spalten jetzt plötzlich andere drei Spalten. Aber ein relevanter Unterschied ist, diese Tabelle ist doppelt so lang. Deswegen heißt es "Langes Datenformat", weil für jeden Pinguin jetzt zwei Einträge existieren. In einem eben für die Schnabellänge und der andere für die Flossenlänge. Und das Ganze möchte man deswegen für ggplot haben, weil man dann ggplot sagen kann, ja, ich möchte jetzt als Farbe zum Beispiel, also wenn ich jetzt das Ganze als Punkte darstellen möchte, möchte ich sagen, ja, die Farbe hängt jetzt davon ab, welcher Datengruppe das zugehört. Also in diesem Fall wäre das, ist das jetzt ein Punkt für Schnabellänge oder Flossenlänge? Und dann ist die Schnabellänge eine Farbe und die Flossenlänge hat eine andere Farbe. Und dann erzeugt ggplot auch automatisch eine Legende und so weiter.
Janine: Das heißt, durch das Long-Format bekomme ich sozusagen mehr Flexibilität wieder.
Helena: Genau. Ja, und man nutzt halt auch die Features von ggplot besser aus. Man kann zwar jetzt auch irgendwie zwei verschiedene Linien malen und denen auch eine feste Farbe geben, die nicht auf Basis der Daten passiert, aber dann würde man keine automatische Legende bekommen. Und ich fand, als ich angefangen habe, mit ggplot zu arbeiten, weil eben dieses Datenformat, das halt sehr anders dann teilweise ist und noch ein bisschen Konvertierung erfordert, sehr gewöhnungsbedürftig. Also wenn etwas eine Hürde war, dann das. Also das fand ich zumindest. Wir haben auch dafür ein Beispiel, ja, wo das Datenformat umgewandelt wird und wie das geht in das lange Datenformat. Das benutzt dann das tidyr-Paket, was auch zum tidyverse gehört. Ja, ein anderer Vorteil jetzt zum Beispiel am longen Datenformat wäre, wenn man jetzt sagt, ja, ich möchte einen... also wenn man einen Pinguin immer in einer Zeile hat, wie beim breiten Datenformat, beim wide Format, was macht man dann, wenn man den selben Pinguin nochmal wiegt und vermisst? Zum Beispiel, wenn man ihn als Kind gewogen und vermessen hat und so weiter. Und da müsste man ja für jeden Messwert nochmal Spalte einfügen. Wenn man aber diese ganzen Messungen gar nicht für alle Pinguine immer macht, dann hätten ja ganz viele dieser Spalten ganz viele leere Werte und damit könnte man auch nicht so viel anfangen. Das heißt, auch deswegen kann es sinnvoll sein, das long Datenformat zu verwenden, weil man dann nicht für jeden Pinguin eine Spalte hat, sondern zum Beispiel für jede Messung, die man durchführt, eine Zeile. Und dann kann ein Pinguin auch mehrere Zeilen beanspruchen.
Janine: Ein mehrzeiliger Pinguin.
Was gehört alles zur Spezifikation? (00:29:06)
Janine: Das ist dann jetzt so unsere Grundlage mit den Daten. Ich bin jetzt überzeugt, ich möchte das long Format benutzen und bereite die Daten entsprechend auf. So wäre jetzt mein nächster Schritt wahrscheinlich, dann die Grafik zu erstellen. Was muss ich dafür denn machen, wenn jetzt meine Daten im richtigen Format vorliegen?
Helena: Also der erste Schritt ist ja die sogenannte Spezifikation. Ich spezifiziere meinen Plot, ich sage, welche Daten ich benutzen möchte. Also im Fall von den Pinguinen sage ich, ja, ich möchte jetzt die Pinguine im Datenformat long benutzen. Und dann sage ich, welche Geometrie ich haben will, also in diesem Fall Punkte. Und da muss ich nur noch sagen, ja, was sind denn meine Aesthetics? Also auf der x-Achse möchte ich das Gewicht haben, auf der y-Achse möchte ich eben die Werte angezeigt bekommen und als Farbe möchte ich haben, ob es jetzt Schnabellänge oder Flossenlänge ist. Und dann bin ich auch schon fertig, weil andere Sachen werden in ggplot automatisch festgelegt, wenn ich die nicht benenne. Sind es kathesische Koordinaten, lineare Skala und so weiter auf den Achsen. Und ja, dann gebe ich nur noch den Plot aus.
Wann passiert das Zusammensetzen und Anzeigen? (00:30:23)
Janine: Okay, ganz am Anfang hattest du noch einen anderen Schritt erwähnt, da war noch vor dem Anzeigen das Zusammensetzen. Da hast du jetzt noch nichts zu gesagt. Wo und wann kommt dieses Zusammensetzen denn vor?
Helena: Ja, also wenn ich standardmäßig in ggplot ein Plot ausgebe, dann wird zuerst der Plot zusammengesetzt und dann angezeigt. Und das Zusammensetzen ist quasi der Schritt, in dem ggplot alle Sachen aus der Spezifikation nimmt und sich dann anguckt, ja, was mache ich denn jetzt damit? Also es guckt sich dann die Daten an und welche verschiedenen Ästhetics ich habe und dann kann es zum Beispiel sagen, ja, ich habe jetzt folgende Gruppen und für jeder Einzel dieser Gruppen soll ich einen Boxplot ausrechnen. Und das passiert in diesem Schritt. Das heißt, hier werden die Statistiken angewendet und es wird auch geguckt, auf welche Punkte was dargestellt werden soll, welche Achsen ich brauche, welche Legende ich brauche, wo die Legende steht, wie viel Platz diese Legende braucht. Das heißt, wenn die Legende sehr lange Texte enthält, wird der Plot kleiner zum Beispiel. All diese Dinge werden jetzt ausgerechnet.
Janine: Also sozusagen das passiert, sobald ich quasi meinen Code ausführe?
Helena: Das passiert, wenn du deinen Plot ausgeben willst bei ggplot standardmäßig. Also den Code für die Spezifikation hast du zu dem Zeitpunkt schon längst ausgeführt und machst das nicht mehr. Genau. Und in ggplot heißt das Ganze dann ggbuild. Das ist eine Funktion, die kann man auch aktiv aufrufen. In der Regel macht man das allerdings nicht. Und was dabei herauskommt bei dieser Funktion, ist dann eben eine Tabelle, in der all die typischen Elemente von so einem Plot drin sind. Also die Achse, die Beschriftung, Titel vielleicht von dem Plot. Und dann steht da auch immer drin, zu den einzelnen, wie groß die Sachen sind und so weiter. Diese Tabelle wird dann am Ende verwendet, um tatsächlich das Ganze zu rendern, also als Grafik darzustellen. Das heißt, der erste Schritt ist erstmal unabhängig davon, mit welcher Grafik es am Ende wird. Es ist schon noch relevant, wie viele Pixel zum Beispiel eine Grafik haben soll und wie groß die Schrifttypen sind. Das muss man schon vorher wissen beim Zusammenbauen, weil ja berechnet wird, wie groß ist denn die Legende zum Beispiel. Aber man hat jetzt noch keinen Punkt gemalt. Erst wenn man das alles zusammen gerechnet hat, dann kann man anfangen, Punkte zu malen. Auf zum Beispiel einer png-Datei oder auf dem Bildschirm und so weiter. Während man in der Regel diesen Unterschied nicht sieht, ergibt das allerdings schon Sinn, auch manchmal diese Zwischenschritte zu machen und damit zu arbeiten. Weil wenn ich jetzt zum Beispiel irgendwie einen Plot habe und auf einer Webseite anzeigen lasse, dann irgendwo hinklicke und wissen will, welcher Wert gehört denn jetzt zu diesem Pixel, dann muss man ja irgendwie in der Lage sein, auszurechnen, welcher Wert zu diesem Pixel gehört. Und dazu braucht man dann eben die Werte aus diesem Zusammensetzen, aus dieser Tabelle, um dann zu wissen, mit welchem Pixel korrespondiert denn das überhaupt. Und das lässt sich damit ausrechnen. Zum Beispiel auch wenn man so eine Zoom-Funktion haben will. Man möchte einen Bereich markieren am Computer, da muss ja irgendwie R auch wissen, welcher Bereich wurde denn jetzt angeklickt. Und man kriegt ja erstmal die Pixel, die auf der Grafik sind, zurück. Und da muss man das auch ausrechnen. Das hatte ich zum Beispiel für einen Kunden gemacht, um ja ein bisschen Interaktivität herzustellen.
Janine: Also ich versuche es ja immer in Vergleichen und vielleicht sind mehr Menschen, die zuhören, mit LaTeX vertraut als mit R oder ggplot. Ich weiß es nicht. Die Chance ist vielleich ganz gut...
Helena: Aber LaTeX ist jetzt auch nicht so verbreitet.
Janine: Nee, vielleicht nicht. Es ist selbst bei mir angekommen. Aber da ist es ja auch so, wenn ich mein Dokument dann anzeigen lassen möchte, mein fertiges PDF, das dann eben, also ich drücke auch im Prinzip auf Anzeigen oder Build und dann entsteht das PDF und dabei werden ja auch mehrere Schritte vollzogen, wenn ich Literaturverweise habe, auf welche Seite die sich beziehen und so. Das sind ja mehrere Durchläufe, die LaTeX macht, bis es sich quasi richtig zusammengesetzt hat und sich anzeigen kann. Also kann man das vielleicht so ein bisschen vergleichen?
Helena: Ja, im Prinzip schon.
Janine: Okay.
Helena: Gerade wenn man auch noch anfängt, Änderungen zu machen. Weil wenn man diese Tabelle hat, kann man ja auch anfangen, die zu benutzen und dann Werte in dieser Tabelle zu ändern. Also wenn man jetzt zum Beispiel mehrere Grafiken in einem Plot anzeigen möchte und zwar untereinander so, dass die x-Achse immer die gleichen Werte hat, dann hat ggplot dafür eine fertige Funktion, nämlich die sogenannten Facets. Da kann man dann quasi die gleichen Daten in verschiedene Plots aufteilen. Das ist grundsätzlich ganz gut, aber für einen Kunden hatte ich dann auch die Anforderung, dass jeder dieser Plots auch eine eigene Legende haben sollte und das kann ggplot dann wieder nicht selber. Das heißt, ich musste das ein bisschen nachbauen und um das zu machen, habe ich dann eben diese Tabellen genommen, die ggplot erzeugt hat für die verschiedenen Plots und dann die Größen von den einzelnen Elementen angepasst, sodass dann auch wirklich die beiden x-Achsen genau untereinander dargestellt werden konnten. Ggplot hat zwar immer noch alles zusammengebaut, aber danach habe ich halt ein bisschen was modifiziert und das danach erst gerendert. Das gehört natürlich eher zu den fortgeschrittenen Möglichkeiten, die man mit ggplot durchaus auch hat, aber die findet man nicht unbedingt in der Doku, sondern die findet man eher, wenn man sich existierenden Programmcode von anderen Leuten oder auch von ggplot selber anguckt. Das habe ich auch öfter deswegen gemacht, um herauszufinden, was eigentlich da passiert.
Janine: Ja, klingt auf jeden Fall sehr gut und auch sehr variabel noch in den Möglichkeiten, die sich am Ende so anschließen, wenn man das so ein bisschen durchstiegen hat, was da passiert.
Helena: Ja, genau. Und das, was ich jetzt gerade als Beispiel hatte, dafür gibt es mittlerweile auch ein passendes ggplot-Erweiterungspaket, ...
Janine: Ahja!
Helena: ...dass das schon automatisch macht. Als ich diese Anforderungen hatte vor ein paar Jahren, gab es das noch nicht.
Janine: Ja, das ist natürlich auch der Vorteil, dass die Leute, also die Community drumherum es immer weiterentwickelt auch und nachbessert, was halt jetzt erforderlich wird.
Helena: Ja.
Welche potentiellen Nachteile hat ggplot? (00:36:49)
Janine: Wir haben ja jetzt einige Sachen gehört, die doch irgendwie, habe ich so das Gefühl, sehr für ggplot sprechen. Du sagst ja auch, du arbeitest viel damit. Von daher ist es auch das Tool deiner Wahl sozusagen.
Helena: Ja.
Janine: Aber die meisten Sachen haben ja auf zwei Seiten und du hast, glaube ich, auch schon so die ein oder andere kleine Grenze erwähnt. Wie sieht es denn bei ggplot aus mit den Nachteilen? Also was muss ich abwägen, so vor-/nachteilsmäßig, wenn ich daran denke, ggplot einsetzen zu wollen?
Helena: Ja, also ein Nachteil bei ggplot, den ich durchaus schon öfter mal gesehen habe, ist, dadurch, dass Spezifikation und das Zusammensetzen eben getrennt voneinander sind, fallen manche Fehler in der Spezifikation erst auf, wenn man es zusammensetzen will. Das heißt, in dem Moment, wo ich dann die eine Codezeile, die irgendwie Quatsch produziert, ausführe, funktioniert alles, aber erst wenn es dann zusammengesetzt werden soll, ist es kaputt. Und das macht es ein bisschen schwierig, Fehler zu finden und ggplot zu debuggen. Wenn man jetzt so eine interaktive Sitzung hat, dann zeigt man sich auch einfach nach jedem einzelnen Spezifikationsschritt einmal ein bisschen an, was da passiert. Aber das muss man dann halt auch wissen, warum man das tut, sonst wundert man sich hinterher, ja, ich habe jetzt diese Gruppierung vorgenommen und am Ende sind die Gruppen alle leer und dann funktioniert die Statistische Analyse nicht mehr, aber man sieht erst mal gar nicht, warum.
Janine: Ja, und was ist da so dein Workflow, um solche Fehler dann zu identifizieren? Ist das wie bei anderen Sachen, dass man bestimmte Abschnitte erst mal auskommentiert und guckt, wo es scheitert oder wie kann man da dran arbeiten?
Helena: Ja, also ich würde jeden einzelnen Schritt erst mal mir angucken, jeden Zwischenschritt. Und ja, wenn das Ganze nicht interaktiv läuft, dann baue ich da eher Abfragen ein, ob bestimmte Listen vielleicht null sind.
Janine: Also quasi zwischen Ergebnisse prüfen.
Helena: Ja, zwischen den Status prüfen und die Annahmen überprüfen, dass das überhaupt zu dem Plot passt, was man an Daten reingibt zum Beispiel. Daran kann es ja auch scheitern, dass irgendwie die Daten, die sind alle leer. Fällt auch nicht auf, wenn man die Daten ggplot gibt, sondern alles beim Anzeigen. Ein weiterer Nachteil kann eben sein, dass weil eben ggplot selber diese Gruppen ausrechnet, zu denen dann statistische Analysen gerechnet werden. Ich weiß auch nicht so genau warum, das ineffizient ist manchmal. Aber dieses Aufteilen der Daten in Gruppen produziert sehr großen RAM-Verbrauch, wenn die Daten sehr groß sind. Das heißt, man kann teilweise ein bisschen unnötig viel Speicher verbrauchen an dieser Stelle. Was man natürlich nicht als Problem hat, wenn man vorher die Statistik schon selber berechnet hat. Was dann auch wieder dazu führt, dass ich nicht so richtig verstehe, warum das so ist. Weil ich mache ja doch auch nichts anderes als ggplot.
Janine: Vielleicht muss es sich nebenbei zu viel merken auf einmal...
Helena: Ja.
Janine: ...bis es dann das fertige Ergebnis hat.
Helena: Ja, vielleicht. Aber das ist auf jeden Fall auch schon eine Sache, wo ich dann doch dieses Prinzip mit, dass ggplot die Statistik berechnen soll, einmal aufgeweicht habe und gesagt habe, ja, ich baue jetzt meine eigene Boxplot-Geometrie, wo ich tatsächlich nur die ausgerechneten Werte reinschmeiße. Weil das für manche Fälle einfach vom RAM-Verbrauch her nicht mehr ertragbar war und auf den System wo das lief halt nicht mehr funktioniert hat. Ja, und ggplot ist ja durchaus in erster Linie für statistische Grafiken gebaut worden und das merkt man insbesondere, wenn man mit sogenannten "time-series-data" zu tun hat, also Daten, bei denen auf der x-Achse die Zeit steht. Also ich meine, ggplot kann das ja gut und für statistische Analysen passiert das durchaus auch, dass es das darstellt, das kann dann auch schön das Datumsformat irgendwie anpassen und so weiter. Das ist zum Beispiel eine andere Skala noch, dass man einfach sagt, ich möchte in der Skala Tage haben oder so. Das Problem ist, das sind aber dann teilweise in der Physik zum Beispiel Daten oder jetzt zum Beispiel bei der Podcast-Aufnahme sogenannte Wellenformen, da misst man irgendwie 40.000 Messwerte pro Sekunde, das heißt, wenn man sich irgendwie eine ganze Minute anguckt, sind das schon über eine Million Datenpunkte. Und ja, Tools, die extra dafür gebaut sind, wissen dann genau, dass sie nicht jeden Punkt einzeln malen müssen.
Janine: Ja.
Helena: Sondern nur sagen müssen, ja, dass man Ausschläge sieht, dass man auf jeden Fall für jeden Zeitpunkt irgendwie Minimum und Maximum dargestellt bekommt, aber man muss nicht jeden einzelnen Punkt malen. Das ist allerdings nicht das, was ggplot tut. Wenn ich da jetzt irgendwie sage, ich möchte Liniendiagramm haben oder ein Punktdiagramm, malt es auch jeden einzelnen Punkt und jede einzelne Linie. Das heißt, wenn ich eine Million Datenpunkte als Linien darstellen will, dauert das sehr lange. Das sollte man damit nicht darstellen, weil andere Programme kriegen das innerhalb von einer Sekunde hin ohne Probleme. Das ist einfach nicht darauf optimiert. Das, was ggplot gut kann, kann es gut, aber eine Million Datenpunkte darstellen gehört nicht dazu.
Janine: Ja, okay. Was sind denn vielleicht so als abschließende Frage nochmal dazu so deine Lieblingsanwendungen? Wann bist du dir immer sehr sicher, jetzt ist ggplot das Richtige?
Helena: Ja, also ggplot, ja, lässt sich sehr dynamisch verwenden. Das heißt, ich kann eine ganze Menge anpassen. Klar gibt es den Nachteil, dass es manchmal ganz spezielle Begrenzungen gibt, die das sehr viel komplizierter machen. Aber in den allermeisten Fällen ist es viel einfacher als andere Plots, weil viele Dinge mit viel weniger Code möglich sind. Also wenn ich meinen Plot sehr stark farblich und stilistisch anpassen möchte, dann gefällt es mir sehr gut, weil es schnell geht und weil ich sehr gute Möglichkeiten habe, es so anzupassen, wie ich es gerne hätte. Und andere Plottools, die ich so benutzt habe, waren doch sehr umständlich. Entweder weil man da sehr viel rumklicken muss, wie bei zum Beispiel Excel oder so was wie Origin, was wir in Physiklaboren öfter mal hatten, so ein grafisches Tool. Und programmatisch ist es halt viel klarer strukturiert als so was wie Matplotlib für Python. Also mit Matplotlib gibt es irgendwie das Problem im Gegensatz zu ggplot, dass dieselbe Sache irgendwie, je nachdem, wie man sie verwendet, verschiedene Namen haben kann und anders funktioniert und die Doku beinhaltet immer nur eine Variante, die dann aber nicht besonders gut performt, wenn man mehrere Grafiken gleichzeitig darstellen möchte oder so. Und das sind alles Dinge, die ggplot halt einfach so kann. Man hat immer einen Plot und dieser Plot lässt sich gut abspeichern. Man kann dann einfach, wenn man verschiedene Variablen hat, verschiedene Plots einfach benutzen und damit arbeiten.
Janine: Würdest du auch sagen, also wir hatten ja in der Folge 13 über Datenvisualisierung eben diese verschiedenen Funktionen oder Ansätze aufgemacht, wofür Datenvisualisierung benutzt werden kann, also halt Kommunikation, ich möchte zeigen, was da passiert, oder eben auch Exploration. Würdest du sagen, aufgrund der Flexibilität von ggplot, dass es sich besonders für die Datenexploration eignet, um überhaupt zu erkunden, was in den Datensätzen verborgen ist?
Helena: Ich finde, es eignet sich sehr gut für Kommunikation, weil man halt sehr gute, hübsche Plots generiert. Bei Exploration gibt es so ein paar Kleinigkeiten, wo es gibt halt auch ein Standardplottingtool in R, das in der Regel ziemlich hässliche Plots macht, aus meiner Perspektive, aber für ganz bestimmte explorative Aufgaben durchaus schneller funktioniert, weil wenn man jetzt irgendwie eine Tabelle hat mit zehn Einträgen und diese Einträge alle gegeneinander plotten und so weiter, funktioniert zum Beispiel mit dem Standardplottool viel besser, was für eine Exploration halt schon auch nützlich ist. Also es ist auch mit ggplot gut machbar, aber manchmal ist dieses Standardtool doch ein bisschen schneller, also in der Anwendung. Wenn man einfach nur einmal ganz groben Überblick haben will, wenn man nicht will, dass das irgendwer anders zu Gesicht bekommt, dann kann das schon manchmal effizienter sein, einfach die normale Plotfunktion zu benutzen auf eine Tabelle.
Janine: Dann würde ich sagen, haben wir eigentlich einmal alles abgearbeitet, was wir so ansprechen wollten, oder? Und könnten zum Fazit kommen.
Helena: Ja.
Fazit (00:45:18)
Janine: Ja, ich fange vielleicht dieses Mal an. Also ich habe gelernt, ich habe schon sehr oft aufgrund des Zusammenarbeitens mit dir ggplot gehört, den Begriff, aber ich wusste tatsächlich nicht, dass da wirklich Grammar auf Graphics hinter steckt, also die Grammatik der Graphen quasi wirklich die Grundlagen dafür, wie Grafiken zusammengesetzt werden, sozusagen. Also ja, das nehme ich auf jeden Fall mit. Und eben diese sechs Prinzipien, dass es halt wirklich ganz gut ist, so diese Schritte sich vor Augen zu führen, wie ich von den Daten, die ich habe, bis hin zu einer Anzeige komme, die für andere auch lesbar und nutzbar ist. Das habe ich jetzt vor allem mitgenommen. Und ja, dass es halt eben Vor- und Nachteile gibt, was wir eben am Ende hatten.
Helena: Ja, mein Fazit ist, also ich finde das Konzept, Grafiken eben durch so eine Art sogenannte Grammatik irgendwie strukturierter zu machen, sehr schön, weil dadurch das, was man zu tun hat, halt auch immer eine klare Funktion erfüllt. Und während es natürlich manchmal auch sehr schön ist, wenn man einfach dynamisch beliebig Dinge malen kann, ist es eben für statistische Auswertung schon schön, wenn das gewissen Regeln folgt, die einfach die Nachvollziehbarkeit erhöhen.
Janine: Ja, definitiv.
Helena: Und ich würde allen Leuten, die zweidimensionale Grafiken machen wollen, definitiv empfehlen, mit ggplot zu arbeiten.
Janine: Ja, und ihr findet auch einige interessante Links dazu in den Shownotes. Da haben wir ein bisschen was zusammengesammelt, worüber wir hier gesprochen haben, was wir angerissen haben, und da könnt ihr euch nochmal umgucken.
Nächste Folge: Jahresrückblick im Dezember (00:47:00)
Helena: Ja, und in der nächsten Folge gibt es unseren Jahresrückblick, ja, im Dezember. Also wir hatten ja bisher jedes Jahr einen Jahresrückblick gemacht, zu jedem Jahr, und diesmal machen wir den eben als nächstes, weil es irgendwie bei Jahresrückblicken durchaus nicht unüblich ist, dass irgendwie noch mehrere Wochen fehlen.
Janine: Mal gucken, was wir dann im Januar noch ergänzen.
Helena: Ja, wir haben auf jeden Fall fleißig über das Jahr gesammelt, was es so an spannenden Themen gab und auch Updates zu Themen, die wir im Laufe des Jahres oder des Podcasts allgemein hatten.
Call to Action (00:47:35)
Janine: Ja, und wenn ihr das und andere Folgen von uns hören möchtet und nichts verpassen wollt, folgt uns gern auf mastodon unter @datenleben@podcasts.social. Ihr könnt uns auch auf der Webseite besuchen, www.datenleben.de, da findet ihr übrigens auch unseren RSS-Feed, nur mal so nebenbei. Und ja, hinterlasst uns gerne Feedback, wir würden uns darüber sehr freuen. Und dieses Mal nochmal der Hinweis, wir haben übrigens auch einen YouTube-Kanal, wo wir kleine Videos zu unseren Einspielern veröffentlichen. Wenn ihr also kurze Themen oder Geschichten mit Leuten teilen möchtet, die ihr kennt und sich so etwas durchaus mal anhören würden, aber eben keine ganze Stunde, dann könnt ihr die Videos auch rumreichen. Und ja, schaut vorbei, klickt, liked, macht all diese Dinge.
Outro (00:48:23)
Helena: Ja, dann bleiben wir nur noch für die Aufmerksamkeit zu danken und bis zum nächsten Mal. Ciao!
Janine: Tschüss!