Проблема с использованием atan в pgfplots

Проблема с использованием atan в pgfplots

Я пытаюсь построить график с помощью atan в pgfplots, но это всегда приводит к сотням ошибок.

Я использую пример, который нашел здесь:

\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))};

И так продолжается и продолжается. Более сотни ошибок, а затем компиляция прекращается без какого-либо результата. Что я делаю не так?

решение1

Согласно вашему лог-файлу, у вас есть pgfplots1.11 и pgf2.10. Я могу воспроизвести проблему в этой комбинации.

Работает с обоими актуальными пакетами (т.е. pgfplots1.11 и pgf3.00).

Работает с pgfplots1.10 и pgf2.10.

Альтернативные решения для вас:

  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. В этом случае он предположит, что все обновлено и не будет пытаться применить сломанный патч. Риск применения этого патча: функция, trig format plotsпредставленная в pgfplots1.11, не будет работать. Но со временем она будет работать (вероятно, с версией, которая выйдет после PGF 3.0.0).

Связанный контент