데이터 좌표를 사용하는 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

compatPGFPlot을 사용할 때는 항상 레벨을 설정해야 합니다 . 새로운 것으로 설정하면 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이전 버전과의 호환성을 원하지 않는다는 의미입니다.

addplot버전 1.11에서는 축 환경의 기본 좌표계가 변경되어 및 좌표계가 draw동일해졌습니다. 이전에는 (본 바와 같이) 서로 달랐습니다(자세한 내용은 설명서 참조).

마지막으로, 호환 수준을 사용하지 않으면 pgfplots경고와 함께 큰 소리로 불평합니다... 아무도 읽지 않은 내용입니다 ;-)

관련 정보