¿Cómo dibujo un círculo en pgfplots que usa coordenadas de datos?

¿Cómo dibujo un círculo en pgfplots que usa coordenadas de datos?

Quiero dibujar un círculo con un radio especificado en las coordenadas de datos. Pero no entiendo eso. Aquí hay un círculo con radio "5", pero el radio de sus coordenadas de datos parece ser solo 0,05. ¿Qué me estoy perdiendo?

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

ingrese la descripción de la imagen aquí

Respuesta1

Siempre debes establecer el compatnivel cuando uses PGFPlots. Al configurarlo en algo nuevo, el axis csinterior está predeterminado axisy el radio de un círculo es el esperado.

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

Trazar con círculo

Respuesta2

Esta es solo una respuesta adicional para explicar más el comportamiento dado en la respuesta aceptada (correcta).

pgfplotstiene una muy buena estructura de compatibilidad con versiones anteriores: cuando el autor cambia algo, o incluso corrige algún error, lo hace bajo un mecanismo de "nivel de compatibilidad".

Por ejemplo, las primeras versiones del paquete tenían una posición muy flexible de los ticks de los ejes. Christian Feuersänger solucionó esto, pero ahora había un problema: todos los dibujos ya hechos en documentos antiguos cambiarían, creando un trabajo inesperado y doloroso para los autores. Por lo tanto, el nuevo comportamiento, incluso si es posiblemente el correcto, debe habilitarse manualmente, en este caso compat=1.3, lo que dice que no desea compatibilidad con versiones anteriores a esta.

En la versión 1.11, el sistema de coordenadas predeterminado en el entorno del eje se cambió para que el sistema de coordenadas para addploty drawfuera el mismo; antes (como viste) eran diferentes (detalles en el manual finísimo).

Por último, si no utilizas un nivel de compatibilidad, pgfplotsse queja ruidosamente con un aviso... Que nadie leyó jamás ;-)

información relacionada