Anschlussfrage zu: tikz-foreach-fehler-bei-listenerstellung-illegal-parameter-number-in-definition


alt text

Ich habe wie im Verlinkten Thread Listen mit x-Werten erstellt und möchte diese in einem pgfplot platzieren; das tut soweit. Aber die Platzierung der Labels scheitert:

xtick/.expanded = {\xticklist}, % tut %xticklabels/.expanded = {\xticklabelslist}, % tut nicht

Es scheint, wie im verlinkten Thread, an dem underbrace zu liegen, wenngleich dieses protected ist. Kann/muss man das irgendwie noch mehr protecten?

BTW: Ich wollte hier noch das Zahlenformat einstellen, das geht normalerweise mit '\pgfmathprintnumber[fixed zerofill,precision=2]' vor '\pgfmathresult'. Das tut hier schonmal gar nicht bzw. führt zu seltsamen Darstellungen.

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
%\documentclass[]{article}
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.13}
\usetikzlibrary{math}
\begin{document}
% Reichweite der Ticks festlegen
\def\Range{0,...,6}
% ticklist erstellen
\newcommand{\xticklist}{}% Name reservieren
\let\xticklist=\empty% Liste erstellen
\makeatletter
\foreach \n in \Range
{
\pgfmathparse{\n*pi}%
\ifx\empty\xticklist{} \protected@xdef\xticklist{\pgfmathresult}%
\else \protected@xdef\xticklist{\xticklist,\pgfmathresult}%
\fi
}
\makeatother
Tut: \xticklist
% ticklabelist erstellen
\newcommand\Ausgabe{
\ifnum\n=0 {$\protect\underbrace{\pgfmathresult}_{\n\pi}$}%
\else
\ifnum\n=1 {$\protect\underbrace{\pgfmathresult}_{\approx \pi}$}
\else {$\protect\underbrace{\pgfmathresult}_{\approx \n\pi}$}
\fi
\fi
}
\newcommand{\xticklabelslist}{}% Name reservieren
\let\xticklabelslist=\empty% Liste erstellen
\makeatletter
\foreach \n in \Range
{
\pgfmathparse{\n*pi}%
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

gefragt 13 Feb '18, 20:00

cis's gravatar image

cis
9.5k96460491
Akzeptiert-Rate: 29%


Ich würde die Berechnung einfach pgfplots überlassen und dafür die Tick-Nummer \ticknum verwenden:

Öffne in Overleaf
Code, hier editierbar zum Übersetzen:
\documentclass[border=5mm, varwidth]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{math}
\begin{document}
% Reichweite der Ticks festlegen
\def\Range{0,...,6}
% ticklist erstellen
\newcommand{\xticklist}{}% Name reservieren
\let\xticklist=\empty% Liste erstellen
\makeatletter
\foreach \n in \Range
{
\pgfmathparse{\n*pi}%
\ifx\empty\xticklist{} \protected@xdef\xticklist{\pgfmathresult}%
\else \protected@xdef\xticklist{\xticklist,\pgfmathresult}%
\fi
}
\makeatother
\begin{tikzpicture}[]
\begin{axis}[
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/.expanded = {\xticklist}, % tut
%
xticklabel = {
\pgfmathparse{\ticknum*pi}
$\underbrace{\pgfmathprintnumber{\pgfmathresult}}_{\approx \ticknum\pi}$
}, % tut
%
]
\addplot[domain=0:20, samples=300] {sin(deg(x))};
\end{axis}
\end{tikzpicture}
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

alt text

Prinzipiell kann man aber auch \tick, also den Wert des Ticks verwenden:

Öffne in Overleaf
xticklabel = {
$\underbrace{\pgfmathprintnumber{\tick}}_{\approx \ticknum\pi}$
}, % tut
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

oder daraus sogar wieder den Faktor berechnen:

Öffne in Overleaf
xticklabel = {
\pgfmathparse{\tick/pi}
$\underbrace{\pgfmathprintnumber{\tick}}_{\approx \pgfmathprintnumber{\pgfmathresult}\pi}$
}, % tut
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Siehe auch: http://texwelt.de/wissen/fragen/21551/wie-erstelle-ich-listen-zur-achsenbeschriftung-fur-pgfplots-tikz/21554

Permanenter link

beantwortet 14 Feb '18, 15:20

gast3's gravatar image

gast3
(ausgesetzt)
Akzeptiert-Rate: 53%

bearbeitet 14 Feb '18, 15:27

Deine Antwort
[Vorschau ausblenden]

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Frage-Themen:

×298
×24
×21
×6

gestellte Frage: 13 Feb '18, 20:00

Frage wurde gesehen: 7,090 Mal

zuletzt geändert: 14 Feb '18, 15:27

Willkommen, erstes Mal hier? Schau mal unter FAQ!

×