데이터 좌표에 반경이 지정된 원을 그리고 싶습니다. 그러나 나는 그것을 이해하지 못합니다. 여기에 반지름이 "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
compat
PGFPlot을 사용할 때는 항상 레벨을 설정해야 합니다 . 새로운 것으로 설정하면 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
경고와 함께 큰 소리로 불평합니다... 아무도 읽지 않은 내용입니다 ;-)