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 とpgf2.10 があります。この組み合わせで問題を再現できます。

両方のパッケージが最新であれば (つまりpgfplots1.11 とpgf3.00) 動作します。

pgfplots1.10 および2.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.11trig format plotsで導入された機能pgfplotsは動作しません。ただし、最終的には動作します (おそらく PGF 3.0.0 の後のバージョンで動作します)。

関連情報