TikZ: punktierter Punkt für Funktion mit Lücke

TikZ: punktierter Punkt für Funktion mit Lücke

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}

Bildbeschreibung hier eingeben

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, pgfplotsnur am ersten Punkt einen Marker zu zeichnen, indem man einstellt mark repeat=N, wobei Neine 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. Fist eine mit deklarierte Funktion declare function, siehe Code unten.

Bildbeschreibung hier eingeben

\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}

verwandte Informationen