Verwandt mit: pgfplots-fehler-bei-listen-verwendung Ich habe hier einen Plot. Ich möchte, dass statt '1pi' bzw. '-1pi', wie üblich, 'pi' bzw. '-pi' angezeigt wird. Dazu habe ich das Beispiel zur Fallunterscheidung mit Öffne in Overleaf
xtick/.expanded = {\xticklist}, xticklabel={% \ifdim\tick pt =3.14159 pt $\pi$% \else% \ifdim\tick pt =-3.14159 pt $-\pi$% \else% \pgfmathparse{\tick / pi}% $\pgfmathprintnumber[precision=0]{\pgfmathresult}\pi$% \fi \fi}, Nun habe ich aber das Problem, dass ich den zuvor erzeugten Listenwert '3.14159' reinschreiben, also kennen muss. Wenn ich einfach Was kann ich da machen? Öffne in Overleaf
%\documentclass[]{article} \documentclass[border=5mm, varwidth]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=1.13} \begin{document} % Reichweite der Ticks festlegen \def\Range{-6,...,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 Anzeigen: \xticklist \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/.expanded = {\xticklist}, xticklabel={% \ifdim\tick pt =3.14159 pt $\pi$% \else% \ifdim\tick pt =-3.14159 pt $-\pi$% \else% \pgfmathparse{\tick / pi}% $\pgfmathprintnumber[precision=0]{\pgfmathresult}\pi$% \fi \fi}, ] \addplot[domain=-10:10, samples=300] {sin(deg(x))}; \end{axis} \end{tikzpicture} \end{document} gefragt 14 Feb '18, 17:00 cis |
Öffne in Overleaf
xticklabel={% $\pgfmathparse{abs(\tick) == pi ? ( \tick < 0 ? "-" : "" ) : int(\tick / pi) }% \pgfmathresult\pi$% } Man kann den Ausdruck auch als Öffne in Overleaf
xticklabel={% $\pgfmathparse{ \tick == -pi ? "-" : ( \tick == pi ? "" : int(\tick / pi) ) }% \pgfmathresult\pi$% } schreiben. Vorn steht jeweils die Bedingung, nach dem Fragezeichen kommt der Fall, dass die Bedingung zutrifft, nach dem Doppelpunkt der Fall, dass die Bedingung nicht zutrifft. Wenn also Insgesamt führt dann beispielsweise: Öffne in Overleaf
\documentclass[border=5mm, varwidth]{standalone} \usepackage{pgfplots} \pgfplotsset{compat=newest} \begin{document} % Reichweite der Ticks festlegen \def\Range{-6,...,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 Anzeigen: \xticklist \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/.expanded = {\xticklist}, xticklabel={% $\pgfmathparse{ \tick == -pi ? "-" : ( \tick == pi ? "" : int(\tick / pi) ) }% \pgfmathresult\pi$% }, ] \addplot[domain=-10:10, samples=300] {sin(deg(x))}; \end{axis} \end{tikzpicture} \end{document} zu: Manchmal werden scharfe Vergleiche mit beantwortet 14 Feb '18, 17:34 gast3 Puh, schwere Kost diese Syntax. Da muss man sich erstmal dran gewöhnen. :)
(14 Feb '18, 18:32)
cis
@cis: An die Syntax kann man sich gewöhnen. Schwieriger finde ich das Hantieren mit Strings und Zahlen innerhalb von Ausdrücken. In dem Beispiel war es ja noch einfach. Wenn man Zahlen allerdings auf eine bestimmte Anzahl an Stellen runden und noch irgendwelche Schweinereien damit anstellen will, dann muss man sich ganz schön das Hirn verbiegen. Da vergeht mir dann die Lust. Dann denke ich lieber über passenden Lua-Code nach.
(14 Feb '18, 19:06)
gast3
Stimmt, eigentlich sogar ganz ok. Bei meinem eigentlichen Bsp. bin ich jetzt auf sowas gekommen:
(14 Feb '18, 22:27)
cis
|
Hat sich erledigt. Kann man etwa so machen:
xtick/.expanded = {\xticklist}, xticklabel={% \pgfmathsetmacro{\piWert}{pi} \ifdim\tick pt =\piWert pt $\pi$% \else% \ifdim\tick pt =-\piWert pt $-\pi$% \else% \pgfmathparse{\tick / pi}% $\pgfmathprintnumber[precision=0]{\pgfmathresult}\pi$% \fi \fi},
Blöd finde ich nur diese Unterscheidung mit diesem
ifdim
und diesen Punktenpt
dann...