pgfplots에서 atan을 사용할 때 발생하는 문제

pgfplots에서 atan을 사용할 때 발생하는 문제

pgfplots에서 atan을 사용하여 무언가를 플롯하려고 하는데 항상 수백 개의 오류가 발생합니다.

여기에서 찾은 예를 사용하고 있습니다.

\documentclass{article}
\usepackage{pgfplots}
\begin{document}

\pgfplotsset{compat=1.9}
\begin{tikzpicture}
\begin{axis}[
     width=160pt,compat=1.5.1,grid style={ultra thin},every axis plot post/.append style={thick},
     x tick label style={font=\tiny},y tick label style={font=\tiny},
     scale only axis,grid=major,axis lines=middle,
     xlabel={$x$},
     ylabel={$y$},
     xmin=-200,
     xmax=200,
     domain=-200:210,
     ymin=-5.5,
     ymax=5.5,
     xtick={-150,-100,...,150},
     ytick={-5, -4,...,5},
     restrict y to domain=-20:20,
     legend style={at={(0.5,-0.05)},anchor=north,nodes={right}},
 ]
 \addplot[mark=none,color=blue, samples=500]{rad(atan(x))};
 \addlegendentry{$y = \tan^{-1}x $};
 \end{axis}
\end{tikzpicture}

\end{document}

오류는 다음과 같습니다.

! Undefined control sequence.
<recently read> \pgfmath@multiply@thousand 

l.23 ...ne,color=blue, samples=500]{rad(atan(x))};

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Undefined control sequence.
\pgfmath@basic@atan@ ... pt \pgfmath@table@lookup 
                                                  {\pgfmath@x }{pgfmath@atan...
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Missing number, treated as zero.
<to be read again> 
                   }
l.23 ...ne,color=blue, samples=500]{rad(atan(x))};

그리고 그것은 계속해서 진행됩니다. 100개가 넘는 오류가 발생하면 아무런 결과도 없이 컴파일이 중지됩니다. 내가 여기서 뭘 잘못하고 있는 걸까?

답변1

로그 파일에 따르면 pgfplots1.11과pgf . 이 조합으로 문제를 재현할 수 있습니다.

두 패키지 모두 최신(예: pgfplots1.11 및pgf 3.00)에서 작동합니다.

pgfplots1.10 에서 작동하며pgf .

귀하를 위한 솔루션 대안은 다음과 같습니다.

  1. PGF를 3.00으로 업그레이드하거나

  2. pgfplots를 1.10으로 다운그레이드하거나

  3. \addplot ... gnuplot {atan(x)};당분간 사용하세요 .

편집하다이 문제는 실제로 예상보다 더 심각한 것으로 나타났습니다.정의되지 않은 제어 순서: \pgfmath@multiply@thousand그리고Miktex 2.9 pgfplots, Circuitikz 라이브러리 충돌 문제근본 원인이 같은 것 같습니다.

근본 원인은 pgfplots이전 PGF 버전을 패치하려는 시도입니다. 그러나 해당 패치는 적용되지 않습니다(즉, 의 버그입니다 pgfplots).

이 문제를 해결하려면 옵션 (1) 또는 (2)에 따라 진행할 수 있습니다. 아니면 줄을 추가할 수도 있습니다.

% HACK: deactivate feature 'trig format' but restore compatibility
% between pgfplots 1.11 and tikz 2.10:
\csname pgfutil@ifundefined\endcsname{pgfmathiftrigonometricusesdeg}{%
    \def\pgfmathiftrigonometricusesdeg#1#2{#1}%
}{}%

~ 전에로딩 pgfplots. 이 경우 모든 것이 최신 상태라고 가정하고 손상된 패치를 적용하려고 시도하지 않습니다. 이 패치를 적용하면 위험합니다. 1.11 trig format plots에 도입된 기능이 pgfplots작동하지 않습니다. 그러나 결국에는 그렇게 될 것입니다(아마 PGF 3.0.0 이후 버전에서는 그럴 것입니다).

관련 정보