Я пытаюсь построить график с помощью 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
Согласно вашему лог-файлу, у вас есть pgfplots
1.11 и pgf
2.10. Я могу воспроизвести проблему в этой комбинации.
Работает с обоими актуальными пакетами (т.е. pgfplots
1.11 и pgf
3.00).
Работает с pgfplots
1.10 и pgf
2.10.
Альтернативные решения для вас:
обновить PGF до 3.00 или
понизить pgfplots до 1.10 или
использовать
\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
представленная в pgfplots
1.11, не будет работать. Но со временем она будет работать (вероятно, с версией, которая выйдет после PGF 3.0.0).