Blog

ggCorpIdent: ggplot2-Grafiken im Corporate Design gestalten

Dies ist ein Add-On zu unserem kürzlich veröffentlichten R Markdown Template für Business Reports. Da wir täglich mit ggplot2 arbeiten und es in fast jedem unserer Projekte verwenden, haben wir ein ggplot2 Theme mit unserem Corporate Design entworfen. Das heißt, es werden unsere Schrift, Farben und unser Logo im Hintergrund der Grafik verwendet. Wir selbst finden das sehr praktisch, da der Stil mit einem einzigen Funktionsaufruf „ein- und ausgeschaltet“ wird, ohne dass der ggplot2 Code selbst angefasst werden muss. Mit dem Paket ggCorpIdent möchten wir diese Funktionalität mit Ihnen teilen, damit auch Sie Ihren individuellen Stil bzw. Ihr Corporate Design problemlos in ggplot2-Grafiken übernehmen können. Dieser Artikel führt durch die wichtigsten Gestaltungsmöglichkeiten.

Installation

Das Paket ggCorpIdent kann bei GitHub heruntergeladen werden. Falls Sie devtools noch nicht installiert haben, tun Sie dies bitte zuerst.

# install.packages("devtools")
devtools::install_github("INWTlab/ggCorpIdent")

ggCorpIdent-Stil "einschalten"

Nachdem dies erledigt ist, rufen wir zunächst eine standardmäßige ggplot2-Grafik basierend auf dem iris-Datensatz auf.

library(ggplot2)

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "A Nice ggplot2 Graphic")
ggplot2 Standard Grafik

Um jetzt das standardmäßige ggCorpIdent-Design zu verwenden, laden wir das Paket und rufen die Funktion ggCorpIdent() vor der eigentlichen Grafik auf. Wenn Sie dies verwenden, um beispielsweise alle Grafiken in einem R Markdown-Bericht zu formatieren, können Sie ggCorpIdent() in einem versteckten Code Chunk (z. B. dem Setup) aufrufen. Danach verwenden alle ggplot2-Grafiken den individuellen Stil. So wird der Unternehmensstil global festgelegt und die Ausgabe wird mit der Standard-Syntax von ggplot2 erstellt.

# Standard-Einstellungen von `ggCorpIdent` 
# Initialisierung von `ggCorpIdent`
library(ggCorpIdent)

ggCorpIdent()
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "Another Nice ggplot2 Graphic",
       subtitle = "With Customized Style")
ggplot2 Individualisierte Grafik

Und das ist im Grunde alles, was Sie tun müssen. Innerhalb von ggCorpIdent() können Sie Ihren eigenen Stil über eine Reihe von Argumenten definieren (Details siehe ?ggCorpIdent). Sehen wir uns einige Beispielkonfigurationen an.

Farben

Über das Argument colors können Sie die Standardfarben mit Ihren eigenen Farben überschreiben.

# Verwendung anderer Farben und einer anderen Schriftart
myCorpColors <- c("dodgerblue4", "violetred1", "mintcream")
ggCorpIdent(colors = myCorpColors)

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "Another Nice ggplot2 Graphic With Changed Colors")
ggplot2 Individualisierte Grafik mit neuen Farben

Sie können beliebig viele Farben angeben. Wenn jedoch mehr Farben benötigt werden, als Sie angegeben haben, werden die angegebenen Farben interpoliert.

# Wenn mehr Farben benötigt werden als vorgegeben sind, 
# werden die vorgegebenen Farben interpoliert

iris$Species <- paste("Species", sample(1:6, size = nrow(iris), replace = TRUE))


ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "Another Nice ggplot2 Graphic With Interpolated Colors")
ggplot2 Individualisierte Grafik mit interpolierten Farben

Schriftarten (Windows)

Die Schriftart bzw. die Schriftfamilie für die Textelemente in Grafiken kann über das Argument base_family geändert werden. Sie kennen dies möglicherweise bereits aus den Theme-Funktionen von ggplot2 (z. B. theme_bw()). Unter Windows muss eine Schriftart zwei Bedingungen erfüllen, um in einer Grafik verwendet werden zu können. Zunächst muss es sich um eine Systemschriftart handeln. Sie können Zeichensätze einfach in den Ordner Systemzeichensätze ziehen und ablegen, um sie zu einer Systemschriftart zu machen. Wenn es sich um eine Systemschriftart handelt, müssen Sie die Schriftart über die Funktion font_import() aus dem Paket extrafont in das Paket importieren. Lassen Sie mich das demonstrieren. Im ttf-Ordner dieses Pakets finden Sie die 4 ttf-Dateien für die Lora-Schriftart. Ziehen Sie diese 4 Dateien in das Verzeichnis C:\Windows\Fonts. Um Ihre Systemschriftarten jetzt für die Verwendung mit diesem Paket verfügbar zu machen, können Sie sie mit dem folgenden Befehl importieren. Dies kann jedoch ein oder zwei Minuten dauern.

# font_import()

Mit dem Argument pattern können Sie genauer festlegen, welche Schriftarten importiert werden sollen. Wenn dies erledigt ist, können Sie über

fonts()

##  [1] "Lato Black"              "Lato"                   
##  [3] "Lora"                    "Arial Black"            
##  [5] "Arial"                   "Arial Narrow"           
##  [7] "Bahnschrift"             "Book Antiqua"           
##  [9] "Bookman Old Style"       "Bookshelf Symbol 7"     
## [11] "Bradley Hand ITC"        "Calibri"                
## [13] "Calibri Light"           "Cambria"                
## [15] "Candara"                 "Candara Light"          
## [17] "Century"                 "Century Gothic" 
...

prüfen welche Schriftarten zur Verfügung stehen. Wählen Sie diejenige aus, die Sie verwenden möchten - in diesem Fall ist es Lora - und rufen Sie sie in der Funktion ggCorpIdent im Argument base_family auf. Rufen Sie dann den vorherigen Plot erneut auf. Und wie Sie sehen, hat sich die Schriftart in Lora geändert!

ggCorpIdent(base_family = "Lora",
            colors = myCorpColors)
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "Another Nice ggplot2 Graphic With Customized Font")
ggplot2 Individualisierte Grafik neuer Schriftart

Schriftarten (Linux)

Unter Linux können Sie Systemschriftarten genauso verwenden wie unter Windows. Sobald Sie eine Schriftart verwenden möchten, die keine Systemschriftart ist, müssen Sie diese auch auf Ihrem System installieren. Hier ist ein Link zum Installieren einer Schriftart unter Ubuntu beispielsweise: https://wiki.ubuntu.com/Fonts. Dann importieren Sie die Schrift über font_import() in das Paket und können sie verwenden.

Sie können ein Logo innerhalb der Grafik hinzufügen. Dabei können Position, Skalierung und Transparenz individuell Skalierungbestimmt werden. Wenn Sie das Logo nicht mehr verwenden möchten, setzen Sie das Argument logo auf NULL.

# Einbinden eines Logos
logoFromPackage <- system.file("logo/logo_INWT.png", 
                               package = "ggCorpIdent", 
                               mustWork = TRUE)
                               
ggCorpIdent(colors = myCorpColors,
            base_family = "Lora",
            logo = logoFromPackage,
            logoPosition = "bottomright",
            logoSize = 0.4,
            logoTransparency = 0.5)

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "What a Nice, Customized and Branded ggplot2 Graphic",
       subtitle = "With Custom Colors, Font and Logo")
ggplot2 Individualisierte Grafik neuer Schriftart

Derzeit gibt es nur eine Ausnahme, das Logo kann nicht in Kombination mit coord_polar() verwendet werden. In diesem ganz besonderen Fall verwenden Sie die ursprüngliche Funktion ggplot2::ggplot und nicht die Wrapper-Funktion ggCorpIdent::ggplot:

ggplot2::ggplot(iris, aes(x = Species, fill = Species)) +
  geom_bar() +
  coord_polar() +
  theme(axis.text.x = element_blank())
ggplot2 Individualisierte Grafik mit Polarkoordinaten

ggCorpIdent-Stil "ausschalten"

Wie in der Einführung erwähnt, ist es ziemlich einfach, das Styling wieder auszuschalten und das standardmäßige Erscheinungsbild von ggplot2 in den Grafiken wiederherzustellen.

# Das Paket `ggCorpIdent` wird detached und das Theme auf den Standard zurückgesetzt 
# Der standarmäßige ggplot2-Stil mit identischer(!) Syntax:
detach("package:ggCorpIdent")
theme_set(theme_gray())

ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, col = Species)) +
  geom_point() +
  labs(title = "The Standard Nice ggplot2 Graphic",
       subtitle = "Detaching `ggCorpIdent` is Sufficient to get Standard Output Back")
ggplot2 Individualisierte Grafik ohne Corporate Design

Mitwirken

Sie können gerne an der Verbesserung dieses Pakets helfen, öffnen Sie einfach eine Issue auf GitHub oder senden Sie einen Pull-Request.