Wie zeichne ich in pgfplots einen Kreis, der Datenkoordinaten verwendet?

Wie zeichne ich in pgfplots einen Kreis, der Datenkoordinaten verwendet?

Ich möchte einen Kreis mit einem in Datenkoordinaten angegebenen Radius zeichnen. Aber das gelingt mir nicht. Hier ist ein Kreis mit Radius „5“, aber sein Datenkoordinatenradius scheint nur 0,05 zu sein. Was übersehe ich?

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

Bildbeschreibung hier eingeben

Antwort1

Sie sollten compatbei der Verwendung von PGFPlots immer die Ebene festlegen. Wenn Sie sie auf einen neuen Wert festlegen, axis csist sie im Inneren standardmäßig axisund der Radius eines Kreises ist wie erwartet.

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

Plot mit Kreis

Antwort2

Dies ist nur eine zusätzliche Antwort, um das in der (korrekten) akzeptierten Antwort angegebene Verhalten näher zu erläutern.

pgfplotsverfügt über eine sehr schöne Abwärtskompatibilitätsstruktur – wenn der Autor etwas ändert oder sogar einen Fehler behebt, geschieht dies im Rahmen eines „Kompatibilitätsebenen“-Mechanismus.

Beispielsweise war die Positionierung der Achsenmarkierungen in den allerersten Versionen des Pakets sehr locker. Christian Feuersänger hat dies behoben, aber jetzt gab es ein Problem: Alle bereits in alten Dokumenten vorgenommenen Zeichnungen würden sich ändern, was den Autoren schmerzhafte, unerwartete Arbeit bescherte. Daher muss das neue Verhalten, auch wenn es wohl das richtige ist, manuell aktiviert werden, in diesem Fall mit compat=1.3-, was bedeutet, dass Sie keine Kompatibilität mit früheren Versionen wünschen.

In Version 1.11 wurde das Standardkoordinatensystem in der Achsenumgebung so geändert, dass die Koordinatensysteme für addplotund drawgleich waren; vorher (wie Sie gesehen haben) waren sie unterschiedlich (Details im sehr ausführlichen Handbuch).

Und schließlich, wenn Sie keine Kompatibilitätsstufe verwenden, pgfplotsbeschwert sich das lautstark mit einer Warnung... Die niemand jemals gelesen hat ;-)

verwandte Informationen