Como faço para desenhar um círculo em pgfplots que usa coordenadas de dados?

Como faço para desenhar um círculo em pgfplots que usa coordenadas de dados?

Quero desenhar um círculo com raio especificado nas coordenadas dos dados. Mas eu não entendo isso. Aqui está um círculo com raio "5", mas o raio das coordenadas dos dados parece ser de apenas 0,05. o que estou perdendo?

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

insira a descrição da imagem aqui

Responder1

Você deve sempre definir o compatnível ao usar PGFPlots. Ao configurá-lo para algo novo, o axis cspadrão é interno axise o raio de um círculo é o 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}

Plotar com círculo

Responder2

Esta é apenas uma resposta adicional para explicar mais o comportamento dado na resposta aceita (correta).

pgfplotstem uma estrutura de compatibilidade com versões anteriores muito boa - quando o autor altera alguma coisa, ou até mesmo corrige algum bug, ele o faz sob um mecanismo de "nível de compatibilidade".

Por exemplo, as primeiras versões do pacote tinham um posicionamento muito flexível dos ticks dos eixos. Christian Feuersänger corrigiu isso, mas agora havia um problema: todos os desenhos já feitos em documentos antigos mudariam, criando um trabalho doloroso e inesperado para os autores. Portanto, o novo comportamento, mesmo que seja indiscutivelmente correto, deve ser ativado manualmente, neste caso compat=1.3- o que indica que você não deseja compatibilidade com versões anteriores a esta.

Na versão 1.11, o sistema de coordenadas padrão no ambiente de eixos foi alterado para que o sistema de coordenadas para addplote drawfosse o mesmo; antes (como você viu) eles eram diferentes (detalhes no manual muito fino).

Por fim, se você não usa um nível de compatibilidade, pgfplotsreclame bem alto com um aviso... Que ninguém nunca leu ;-)

informação relacionada