alt text

Etwa bei trigonometrischen Funktionen möchte man meist pi-Faktoren an der x-Achse auftragen. Klassiche Möglichkeit wäre die Angabe der ticks und ihrer Labels.

xtick={-6.28, -4.71, -3.14, -1.57, 1.57, 3.14, 4.71, 6.28 }, xticklabels={$-2\pi$, $-\frac{3\pi}{2}$, $-\pi$, $-\frac{\pi}{2}$, $\frac{\pi}{2}$, $\pi$, $\frac{3\pi}{2}$, $2\pi$ },

Ich hab mich gefragt, ob man solche oder ähnliche Inhalte nicht automatisch durch durch Schleifen erstellen kann.

Ich wollte die Frage ursprünglich zur Selbstbeantwortung einreichen, da ich glaubte hier eine Methode zur Listenerstellung gefunden zu haben. Diese Methode mag für einfache Beispiel wie hier sogar noch gehen; davon abgesehen ist die Verwendung von xdef aufwendig und anfällig, was Inhalte betrifft (siehe im Link).

Kann man solche Listen nicht eleganter, d.h. automatisiert/berechnend, erstellen, idealerweise mit der Bibliothek tikzmath oder sowas?

Öffne in Overleaf
%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}

\begin{document}

\begin{tikzpicture}[]
\begin{axis}[enlarge y limits={0.5,upper}, % kein Effekt
axis lines=middle, 
xlabel=$x$,xlabel style={anchor=north},
ylabel=$y$,ylabel style={anchor=east},
x axis line style = {-latex}, y axis line style = {-latex},
%
xtick={-6.28, -4.71, -3.14, -1.57,
        1.57, 3.14, 4.71, 6.28
},
xticklabels={$-2\pi$, $-\frac{3\pi}{2}$, $-\pi$, $-\frac{\pi}{2}$,
                 $\frac{\pi}{2}$, $\pi$, $\frac{3\pi}{2}$, $2\pi$
},
]
\addplot[domain=-3.2:7, samples=300] {sin(deg(x))}; 
\end{axis}
\end{tikzpicture}

\end{document}

PS: Mir geht es hierbei durchaus um eine allgemeine Methode, was die Anotationen in den Labels zu den entsprechenden Ticks angeht (nicht notwendigerweise nur die pi-Vielfachen). Hier ein Beispiel, was \underbrace verwendet:

alt text

gefragt 13 Feb, 19:58

cis's gravatar image

cis
6.4k11141232
Akzeptiert: 71%

bearbeitet 13 Feb, 20:06

Schon einmal überlegt, mit xticklabel einen Befehl anzugeben, der entweder aus \tick oder \ticknum die gewünschte Ausgabe direkt berechnet? In der pgfplots-Anleitung gibt es dazu mehrere Beispiele.

(14 Feb, 07:47) saputello

Wie von saputello in seinem Kommentar bereits vorgeschlagen, kann man mit den Optionen xticklabel, yticklabel, zticklabel auch Code zur Generierung des Labels angeben. Als Variablen für die Berechnung eines Labels stehen \tick (aktueller Tick-Wert, beispielsweise aus xtick), \ticknum (Nummer des aktuellen Ticks) und \nexttick (gibt es nur bei Verwendung von Intervallen für die Ticks) zur Verfügung.

Für Dein π-Beispiel könnte man etwas vereinfacht beispielsweise

Öffne in Overleaf
xticklabel={%
  \pgfmathparse{\tick / 3.14}%
  $\pgfmathprintnumber{\pgfmathresult}\pi$%
}

verwenden und bekommt dann:

Pi

Mit ein wenig Fallunterscheidung bekommt man auch Brüche statt 1.5 etc. hin.

Man kann auch das Beispiel mit Klammern über eine Funktion realisieren.

pgf bietet ja selbst auch Rundung und Fallunterscheidungen, so dass man wirklich sehr viel damit machen kann. In der pgfmath-Anleitung ist darüber hinaus auch ein Beispiel angegeben, bei dem \ifdim für Vergleiche missbraucht wird. Bei Verwendung von LuaTeX, das für pgfplots ohnehin empfehlenswert ist, kann man an der Stelle auch Lua-Code ausführen, um aufwendige Funktionen zu realisieren und erhält dann beispielsweise:

Klammerproblem

Da du bisher mit Listen gearbeitet hast, sei auch darauf hingewiesen, das etoolbox relativ aufwendige Listenoperationen bietet. Das sind dann zwar keine Komma separierten Listen mehr, aber man kann sich durchaus vorstellen, wiederum über xticklabel Code auszuführen, der das gewünschte Listenelement aus einer solchen Liste extrahiert.

Was die beste Lösung ist, ist IMHO nicht allgemein zu sagen. Es kommt letztlich auf die konkrete Anwendung an. Wann immer aber das Label quasi aus der Nummer des Ticks oder aus dem Wert des Ticks auf irgend eine Art berechnet werden kann, kann auch xticklabel, xticklabel bzw. zticklabel zum Einsatz kommen.

Als letzte Möglichkeit sei nur der Vollständigkeit halber noch darauf hingewiesen, dass pgfplots die Labels auch aus einer Tabelle lesen kann. Siehe dazu die Anleitung.

Permanenter link

beantwortet 14 Feb, 09:01

Ijon%20Tichy's gravatar image

Ijon Tichy
6.5k1919

bearbeitet 14 Feb, 09:31

Ok, verstanden. Aber die Liste xtick={-6.28, -4.71, -3.14, -1.57, 1.57, 3.14, 4.71, 6.28}, muss ich dafür weiterhin manuell setzen?

€dit: Ah wobei, die xticklist kann man mit der verlinkten Methode erstellen. Für einfache Zahlenrechnungen macht dieses xdef-Gedöns ja noch keine Probleme.

(14 Feb, 09:52) cis
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×226
×17
×14

Frage gestellt: 13 Feb, 19:58

Frage wurde angeschaut: 180 Mal

Zuletzt aktualisiert: 14 Feb, 09:55