Legen Sie die Koordinatenbeschriftung für PGFplots mit ifnum fest

Legen Sie die Koordinatenbeschriftung für PGFplots mit ifnum fest

Ich kann dieses kleine, unangenehme Problem nicht lösen. \ifnumIch lege die Position der Beschriftungen um die Koordinaten in meinem pgfplot fest. Das funktioniert gutAber:

Ich kann nur testen, ob die Variable \coordindexgrößer oder kleiner als ein bestimmter Wert ist. Ich möchte testen können, ob der Index einer Zahl entspricht. Tex gibt mir diesen Fehler, wenn ich es \ifnum\coordindex=0zuerst verwende.

Fehlt = eingefügt für \ifnum. \end{axis}

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=1.10}

\pgfplotsset{
    name nodes near coords/.style={
        every node near coord/.append style={
            anchor=center,                      % 
            name=#1\coordindex,                 % naming of npdes with running index
            alias=#1last,
        },
    },
    name nodes near coords/.default=coordnode
}

\begin{document}
\begin{tikzpicture}
    \begin{axis}[%
        width=\textwidth,
        height=.3\textheight,
        scale mode = scale uniformly,
        scale only axis,
        xmin=-200,
        xmax= 250,
        ymin=- 50,
        ymax= 400,
        axis x line = middle,
        axis y line = left,
        grid = none,
        xtick = {-200, -100, ...,300},
        ytick = {-100, 0, ...,400},
        minor tick num = 1,
        ytick align = outside,
        extra x ticks={0},
        extra x tick style={grid=major},
        xlabel={x / mm},
        ylabel={y / mm},
    ]

        \addplot+[
            color=orange,
            ultra thick,
            shape=circle,
            nodes near coords={},
            every node near coord/.append style={
               label={
                   [black!80, label distance=-1ex]
                   \ifnum\coordindex<1
                       5
                   \else
%                      \ifnum\coordindex=3
%                          -135
%                      \else
                           180-\coordindex*45
%                      \fi
                   \fi
                   :$p_{\coordindex}$
                }
            },
            name nodes near coords=p
        ]
        table{%
            0           0     
            -79.9393    236.8749 
            143.0014    350.0007
            143.0014    300.0000
            200.0008    300.0000
        };  
    \end{axis}
\end{tikzpicture}
\end{document}

Ich habe es auch mit dem ifthenPaket versucht, aber hatte kein Glück. Hat bitte jemand eine schnelle Lösung dafür? Was mache ich falsch? Laut dem Dokument sollte das nicht vorkommen.

Vielleicht hat ja auch jemand von Euch einen Tipp, wie man das Y-Label genauso ausdrucken kann, wie das X-Label gesetzt ist, also einfach über und/oder neben dem Y-Label.

Antwort1

Das ist ähnlich wieWarum funktioniert \ifnum nicht innerhalb von TikZ-Stildefinitionen?, aber die Situation ist anders.

Bei der Verarbeitung label={...}von sucht PGF nach =; ein Workaround besteht darin, es folgendermaßen zu verbergen:

        every node near coord/.append style={
           label={
               [black!80, label distance=-1ex]
               \ifnum\coordindex<1
                   5
               \else
                  \ifnum\coordindex\equals 3
                      -135
                  \else
                       180-\coordindex*45
                  \fi
               \fi
               :$p_{\coordindex}$
            }
        },

wobei \equalsin der Präambel definiert wird durch

\newcommand{\equals}{=}

Andere Möglichkeit:

        every node near coord/.append style={
           label={
               [black!80, label distance=-1ex]
               \numbercompare{\coordindex<1}
                 {5}
                 {\numbercompare{\coordindex=3}{-135}{180-\coordindex*45}}%
               :$p_{\coordindex}$
            }
        },

welches benötigt

\usepackage{expl3}

\ExplSyntaxOn
\cs_set_eq:NN \numbercompare \int_compare:nTF
\ExplSyntaxOff

verwandte Informationen