Logarithmische Achsen in R-Plots formatieren

Im Gegensatz zu gnuplot, werden in R-Plots die logarithmische Achsen nicht sehr schön formatiert. Das Paket SFSmisc schafft hier Abhilfe. In diesem Artikel beschreibe ich Schritt für Schritt, wie man ansehnliche logarithmische Achsen für R-Plots erstellt.

  1. Als Beispiel sollen Daten geplottet werden, die in einem doppelt logarithmischen Plot eine Gerade ergeben:
    x = 1:1000
    y = x^-1.5
  2. Nun werden diese Daten mit dem Befehl plot() in einem Koordinatensystem mit logarithmischer X- und Y-Achse (log="xy") dargestellt:
    plot(x, y, log="xy")

    Dabei kann man erkennen, dass es keine kleinen Striche zur Unterteilung der Bereiche zwischen den einzelnen Größenordnungen gibt:

    Plot mit logarithmischen Achsen. Standardmäßig werden keine Striche zwischen den Größenordnungen eingezeichnet.
    Plot mit logarithmischen Achsen. Standardmäßig werden keine Striche zwischen den Größenordnungen eingezeichnet.
  3. Es ist aber durchaus üblich, den Bereich zwischen zwei Größenordnungen mit 8 kleinen Strichen zu unterteilen. Diese Striche zeigen an, an welchen Stellen 20%, 30%, 40%, 50%, 60%, 70%, 80% oder 90% der folgenden Größenordnung erreicht wurden. Um das in R zu bewerkstelligen, muss zunächst das Paket SFSmisc installiert werden (siehe dazu auch: Funktion aus einem bestimmten R-Paket laden):
    # Installation
    install.packages("sfsmisc", dependencies=T)
    # Paket laden
    library(package = "sfsmisc")
  4. Im Anschluss plotten wir die Daten erneut, aber ohne dabei die Achsen zu beschriften (xaxt="n", yaxt="n"). Die Beschriftung der Achsen wird im Anschluss mit Hilfe des Befehls eaxis() aus dem Paket SFSmisc hinzugefügt:
    plot(x, y, log="xy", xaxt="n", yaxt="n")
    sfsmisc::eaxis(side=1)   # X-Achse
    sfsmisc::eaxis(side=2)   # Y-Achse

    Im neuen Plot sind nun auf jedenfall acht Striche zur Unterteilung einer Größenordnung zu sehen:

    Erstellt man die Achsen eines Plots mit Hilfe des Befehls eaxis() aus dem Paket SFSmisc, so wird der Bereich zwischen zwei Größenordnungen in neun Teile unterteilt. Eventuell werden aber nicht nur die Zahlen für die Größenordnungen eingetragen, sondern auch für dazwischen liegende Werte (hier z.B. 5, 50 und 500).
    Erstellt man die Achsen eines Plots mit Hilfe des Befehls eaxis() aus dem Paket SFSmisc, so wird der Bereich zwischen zwei Größenordnungen in neun Teile unterteilt. Eventuell werden aber nicht nur die Zahlen für die Größenordnungen eingetragen, sondern auch für dazwischen liegende Werte (hier z.B. 5, 50 und 500).

    In diesem Beispiel wurde nicht explizit angegeben, welche Zahlen auf den Achsen zu sehen sein sollen. Daher sind nicht nur die Größenordnungen, sondern auch Werte dazwischen, als Zahlen eingetragen.

  5. Daher kann man nun noch explizit angeben, welche Zahlen sichtbar sein sollen (at=)
    plot(x, y, log="xy", xaxt="n", yaxt="n")
    sfsmisc::eaxis(side=1, at=10^c(0:3))
    sfsmisc::eaxis(side=2, at=10^c(-4,-2,0))

    In diesem Plot wurden nur Zahlen für die Größenordnungen angegeben. Auf der X-Achse wurde jede, auf der Y-Achse nur jede zweite Größenordnung mit einer Zahl versehen.
    In diesem Plot wurden nur Zahlen für die Größenordnungen angegeben. Auf der X-Achse wurde jede, auf der Y-Achse nur jede zweite Größenordnung mit einer Zahl versehen.

Mathematische Formeln in Glossar-Einträgen verwenden

Ein Glossar hilft dem Leser, auf schnellem Wege eine kurze Erkläung für verwendete Fachbegriffe zu finden. In LaTeX ist es möglich, automatisch ein Glossar erzeugen zu lassen. Dazu erstellt man in der Präambel mit dem Befehl \newglossaryentry{LABEL}{} einen neuen Eintrag, und bindet ihn dann mit dem Befehl \gls{LABEL}, \Gls{LABEL}, \plspl{LABEL} oder \Glspl{LABEL} in den Text ein. Verwendet man allerdings mathematische Formeln im Namen des Glossar-Eintrags, so wird diese Formel in der Überschrift im Glossar nicht fett geschrieben. In diesem Artikel beschreibe ich, wie man Glossar-Einträge mit mathematischen Formeln korrekt formatieren kann.

Zunächst muss in der Präambel das Paket glossaries eingebunden werden.

% Glossaries-Paket sollte nach dem hyperref-Paket geladen werden.
% \usepackage[nonumberlist,acronym,toc,section]{glossaries}
\usepackage[toc]{glossaries}
\makeglossaries

Das Problem

Im Anschluss kann man einen Glossar-Eintrag hinzufügen (Hier z.B. zum Fixations-Index (Fst) aus der F-Statistik):

\newglossaryentry{Fst}{
  name        = {$F_{st}$-Wert},
  description = {Fixations-Index,...},
  sort        = {fst-wert}
}

Nun kann man den Eintrag im Text einbinden:

Ein Text, der den Begriff \gls{Fst} enthält.

Im Text selbst wird der Eintrag korrekt angezeigt:

Link zum Glossar-Eintrag, der in normaler Schriftgröße in den Text eingefügt wurde.
Link zum Glossar-Eintrag, der in normaler Schriftgröße in den Text eingefügt wurde.

In Glossar ist die Formel allerdings nicht Fett geschrieben:

Standardmäßig werden mathematische Formeln in den Überschriften der Glossareinträge nicht fett geschrieben.
Standardmäßig werden mathematische Formeln in den Überschriften der Glossareinträge nicht fett geschrieben.

Ein erster Lösungsversuch

Um nun auch die Formel fett zu schreiben, kann man den Befehl \bm aus dem gleichnamigen Paket (bm) verwenden (siehe auch Stackoverflow):

\usepackage{bm}
 
\newglossaryentry{Fst}{
  name        = {$\bm{F_{st}}$-Wert},
  description = {Fixations-Index,...},
  sort        = {fst-wert}
}

Nun wird auch der Begriff Fst aus der Mathe-Umgebung in der Überschrift des Glossar-Eintrags fett geschrieben:

In der Glossar-Überschrift wird mit Hilfe des Befehls \bm die Formel fett geschrieben.
In der Glossar-Überschrift wird mit Hilfe des Befehls \bm die Formel fett geschrieben.

Allerdings wird Fst nun auch innerhalb des laufenden Textes fett geschrieben:

Unter Umständen wird nach der Formatierung der Formel, die Formel auch im Text fett geschrieben.
Unter Umständen wird nach der Formatierung der Formel, die Formel auch im Text fett geschrieben.

Die Lösung

Nun soll die Formel nur in der Glossar-Überschrift, aber nicht im Text fett geschreiben werden. Dazu fügt man zusätzlich den text-key hinzu, ohne diesen mit \bm zu formatieren (siehe Stackoverflow):

\newglossaryentry{Fst}{
  text        = {$F_{st}$-Wert},
  name        = {$\bm{F_{st}}$-Wert},
  description = {Fixations-Index,...},
  sort        = {fst-wert}
}

Schlussbemerkungen

  • Wenn die Formel am Anfang steht, funktionieren die Befehle für die Großschreibung nicht mehr. \gls und \glspl können problemlos verwendet werden. Verwendet man allerdings \Gls oder \Glspl bekommt man folgende Fehlermeldung:

    ! Extra }, or forgotten $.

  • Wenn man Formeln im Namen des Glossar-Eintrags verwendet, muss man auf jedenfall darauf achten, dass ein Wert für die Sortierung angegeben ist. Das geht mit Hilfe des sort-Schlüssels.