データ座標を使用する pgfplots で円を描くにはどうすればいいですか?

データ座標を使用する pgfplots で円を描くにはどうすればいいですか?

データ座標で半径が指定された円を描きたいのですが、わかりません。半径が「5」の円がありますが、データ座標の半径は 0.05 しかないようです。何が足りないのでしょうか?

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
% pgfplots package manual at https://ctan.org/pkg/pgfplots?lang=en

\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xmin=-0.7,xmax=0, xlabel={$x$}, xtick={-1,-0.9,...,0}, minor xtick={-1,-0.95,...,0}, 
    ymin=0.3,ymax=1.0, ylabel={$y$}, ytick={0, 0.1,...,1}, minor ytick={0, 0.05,...,1},
    samples=500,domain=-1:0,
    grid=both,
    title={\large shapes on axis}]
    
  \addplot[blue]({x}, {1-x*x} );
  \draw (axis cs:-0.4,0.5) circle [radius=5];
\end{axis}
\end{tikzpicture}
\end{document}

ここに画像の説明を入力してください

答え1

PGFPlots を使用するときは、常にcompatレベルを設定する必要があります。レベルを新しい値に設定すると、axis cs内側がデフォルトになりaxis、円の半径が期待どおりになります。

\documentclass[tikz]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
    xmin=-0.7,xmax=0, xlabel={$x$}, xtick={-1,-0.9,...,0}, minor xtick={-1,-0.95,...,0}, 
    ymin=0.3,ymax=1.0, ylabel={$y$}, ytick={0, 0.1,...,1}, minor ytick={0, 0.05,...,1},
    samples=500,domain=-1:0,
    grid=both,
    title={\large shapes on axis}]
  \addplot[blue]({x}, {1-x*x} );
  \draw (-0.4,0.5) circle [radius=0.05];
\end{axis}
\end{tikzpicture}
\end{document}

円でプロット

答え2

これは、(正しい)承認された回答で示された動作をさらに説明するための追加の回答です。

pgfplots非常に優れた下位互換性構造を備えています。作成者が何かを変更したり、バグを修正したりすると、「互換性レベル」メカニズムに基づいて変更が行われます。

たとえば、パッケージの最初のバージョンでは、軸の目盛りの位置が非常に緩やかでした。Christian Feuersänger がこれを修正しましたが、今度は問題が発生しました。古いドキュメントで既に行われたすべての描画が変更され、作成者に予期しない面倒な作業が発生するのです。そのため、新しい動作は、たとえそれが正しい動作であっても、手動で有効にする必要があります。この場合compat=1.3、これより前のバージョンとの互換性が必要ないことを示します。

バージョン 1.11 では、軸環境のデフォルトの座標系が変更され、 と の座標系がaddplot同じdrawになりました。以前は (ご覧のとおり) それらは異なっていました (詳細は、非常に詳細なマニュアルを参照してください)。

最後に、互換レベルを使用しない場合は、pgfplots警告とともに大声で文句を言います...誰も読んだことはありません ;-)

関連情報