
Ich muss einen Graphen einer Funktion mit Lücke erstellen und den oberen Punkt punktieren, wie im Bild unten. Gibt es eine andere Möglichkeit, dies zu tun, als manuell einen kleinen Kreis zu erstellen und zu versuchen, die obige Linie anzupassen?
Hier ist mein MWE.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[declare function={sigma(\x)=1/(1+exp(-\x));}]
\begin{axis}
[
grid=major,
xmin=-6,
xmax=6,
axis x line=bottom,
ytick={0,.5,1},
ymax=1,
axis y line=middle,
samples=100,
domain=-6:6,
legend style={at={(1,0.9)}}
]
\draw [dashed,black!50] (1,0.365) -- (1,0.865);
\addplot[very thick,black,mark=none, samples=100,domain=-6:1] (x, {.5 * sigma(x)});
\addplot[very thick,black,mark=none, samples=100,domain=1:6] (x, {.5 + .5 * sigma(x)});
\end{axis}
\end{tikzpicture}
\end{document}
Antwort1
Ich verstehe nicht ganz, was Sie mit „eine Linie passend anpassen“ meinen, aber ich würde eine Funktion deklarieren und diese verwenden, um alles zu zeichnen – die Diagramme, die gestrichelte Linie und den Kreis.
Es ist möglich, pgfplots
nur am ersten Punkt einen Marker zu zeichnen, indem man einstellt mark repeat=N
, wobei N
eine Zahl größer oder gleich der Anzahl der Samples ist. Daher können Sie
\addplot[very thick,black,mark=*,mark options={fill=white},domain=1:6, mark repeat=1000] {F(x)+0.5};
um die zweite Hälfte einschließlich der Markierung zu zeichnen. F
ist eine mit deklarierte Funktion declare function
, siehe Code unten.
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\begin{document}
\begin{tikzpicture}[
declare function={
sigma(\x)=1/(1+exp(-\x));
F(\x) = 0.5 * sigma(\x);
}]
\begin{axis}
[
grid=major,
xmin=-6,
xmax=6,
axis x line=bottom,
ytick={0,.5,1},
ymax=1,
axis y line=middle,
samples=100,
legend style={at={(1,0.9)}}
]
\addplot[very thick,black,mark=none, domain=-6:1] {F(x)};
\addplot[very thick,black,mark=*,mark options={fill=white},domain=1:6, mark repeat=1000] {F(x)+0.5};
\draw [dashed,black!50] (1,{F(1)}) -- (1,{F(1)+0.5});
\end{axis}
\end{tikzpicture}
\end{document}