
학생들을 위한 여러 유인물을 만들고 있는데 그래프의 요소가 주의를 산만하게 할 수 있는 순서로 나타나는 것을 발견했습니다. 여기 확대된 사진이 있는데 무슨 말인지 알 수 있습니다. x=-2의 원은 그래프의 구멍으로 간주되지만 선 아래에 나타납니다. y=0의 선과 그리드 자체에도 동일하게 적용됩니다. 요소가 내가 필요한 정반대의 순서로 렌더링되는 것 같습니다.
그리드가 모든 것 아래에 있고, y=0이 축 위에 있고(가운데에 검은 선이 없음), 두 개의 원이 모든 것 위에 있도록 순서를 제어할 수 있는 방법이 있습니까? 이 그래프의 코드는 다음과 같습니다.
\documentclass[12pt]{extarticle}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\pgfplotsset{vasymptote/.style={
before end axis/.append code={
\draw[densely dashed, magenta] ({rel axis cs:0,0} -| {axis cs:#1,0})
-- ({rel axis cs:0,1} -| {axis cs:#1,0});
}
}}
\begin{document}
\begin{tikzpicture}
\def\FunctionF(#1){(#1+2)/((#1)^2-4)}
\def\FunctionG(#1){0}
\begin{axis}[
axis y line=center,
axis x line=middle,
axis on top=false,
xmin=-6.5, xmax=6.5,
ymin=-6.5, ymax=6.5,
grid,
xtick={-6,...,6},
ytick={-6,...,6},
yticklabels={-6,,-4,,-2,,,,2,,4,,6},
xticklabels={-6,,-4,,-2,,,,2,,4,,6},
vasymptote=2,
]
% Hole
\coordinate (A) at (-2,-1/4);
% y-intercept
\coordinate (B) at (0,-1/2);
% Hole
\draw[magenta, thick, fill=white] (A) circle (2pt);
% y-intercept
\filldraw[magenta, thick] (B) circle (2pt);
% f(x)
\addplot [domain=-7:2-0.1, samples=50, ultra thick, darkgray] {\FunctionF(x)};
\addplot [domain=2+0.1:7, samples=50, ultra thick, darkgray] {\FunctionF(x)};
\node [right, darkgray, thick] at (axis cs: 3,2) {$f(x)$};
%g(x)
\addplot [domain=-7:7, samples=20, ultra thick, magenta, densely dashed] {\FunctionG(x)};
\end{axis}
\end{tikzpicture}
\end{document}
답변1
레이어를 사용하는 방법 중 하나는 다음과 같습니다. 레이어 set layers
에 원을 추가 하고 그립니다 axis foreground
.
\begin{pgfonlayer}{axis foreground}
\draw[magenta, thick, fill=white] (A) circle[radius=2pt];
% y-intercept
\filldraw[magenta, thick] (B) circle [radius=2pt];
\end{pgfonlayer}
전체 예시
\documentclass[12pt]{extarticle}
\usepackage{tikz}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\pgfplotsset{vasymptote/.style={
before end axis/.append code={
\draw[densely dashed, magenta] ({rel axis cs:0,0} -| {axis cs:#1,0})
-- ({rel axis cs:0,1} -| {axis cs:#1,0});
}
}}
\begin{document}
\begin{tikzpicture}
\def\FunctionF(#1){(#1+2)/((#1)^2-4)}
\def\FunctionG(#1){0}
\begin{axis}[
axis y line=center,
axis x line=middle,
axis on top=false,
xmin=-6.5, xmax=6.5,
ymin=-6.5, ymax=6.5,
grid,
xtick={-6,...,6},
ytick={-6,...,6},
yticklabels={-6,,-4,,-2,,,,2,,4,,6},
xticklabels={-6,,-4,,-2,,,,2,,4,,6},
vasymptote=2,
set layers%<- added
]
% Hole
\coordinate (A) at (-2,-1/4);
% y-intercept
\coordinate (B) at (0,-1/2);
% Hole
\begin{pgfonlayer}{axis foreground}
\draw[magenta, thick, fill=white] (A) circle[radius=2pt];
% y-intercept
\filldraw[magenta, thick] (B) circle [radius=2pt];
\end{pgfonlayer}
% f(x)
\addplot [domain=-7:2-0.1, samples=50, ultra thick, darkgray] {\FunctionF(x)};
\addplot [domain=2+0.1:7, samples=50, ultra thick, darkgray] {\FunctionF(x)};
\node [right, darkgray, thick] at (axis cs: 3,2) {$f(x)$};
%g(x)
\addplot [domain=-7:7, samples=20, ultra thick, magenta, densely dashed] {\FunctionG(x)};
\end{axis}
\end{tikzpicture}
\end{document}
플롯 뒤에 원을 그릴 수도 있습니다.
\addplot [domain=-7:2-0.1, samples=50, ultra thick, darkgray] {\FunctionF(x)};
\addplot [domain=2+0.1:7, samples=50, ultra thick, darkgray] {\FunctionF(x)};
\node [right, darkgray, thick] at (axis cs: 3,2) {$f(x)$};
%g(x)
\addplot [domain=-7:7, samples=20, ultra thick, magenta, densely dashed] {\FunctionG(x)};
% Hole
\draw[magenta, thick, fill=white] (A) circle[radius=2pt];
% y-intercept
\filldraw[magenta, thick] (B) circle [radius=2pt];