
Ich erstelle mehrere Handouts für Studenten und mir ist aufgefallen, dass die Elemente meiner Diagramme in einer Reihenfolge erscheinen, die ablenkend wirken kann. Hier ist ein vergrößertes Bild, auf dem Sie sehen können, was ich meine. Der Kreis bei x=-2 soll ein Loch im Diagramm sein, erscheint aber unter der Linie. Dasselbe gilt für die Linie bei y=0 und das Raster selbst. Es scheint, dass die Elemente in genau der entgegengesetzten Reihenfolge dargestellt werden, die ich brauche.
Gibt es eine Möglichkeit, die Reihenfolge zu steuern, sodass das Raster unter allem liegt, y=0 über der Achse liegt (sodass es in der Mitte keine schwarze Linie gibt) und die beiden Kreise über allem liegen? Mein Code für dieses Diagramm lautet wie folgt:
\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}
Antwort1
Hier ist eine Möglichkeit, wie Sie Ebenen verwenden können. Fügen Sie set layers
Kreise in die axis foreground
Ebene ein und zeichnen Sie sie, sagen wir,
\begin{pgfonlayer}{axis foreground}
\draw[magenta, thick, fill=white] (A) circle[radius=2pt];
% y-intercept
\filldraw[magenta, thick] (B) circle [radius=2pt];
\end{pgfonlayer}
Vollständiges Beispiel
\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}
Sie können die Kreise auch einfach nach den Diagrammen zeichnen.
\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];