TikZ: проколотая точка для функции с зазором

TikZ: проколотая точка для функции с зазором

Мне нужно создать график функции с зазором и сделать верхнюю точку проколотой, как на картинке ниже. Есть ли способ сделать это, кроме как вручную создать маленький круг и попытаться подогнать линию выше, чтобы она подошла?

Вот мой 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}

введите описание изображения здесь

решение1

Не совсем понимаю, что вы имеете в виду, говоря о подгонке линии, но я бы объявил функцию и использовал ее для рисования всего — графиков, пунктирной линии и окружности.

Можно нарисовать pgfplotsмаркер только в первой точке, установив mark repeat=N, где N— некоторое число, большее или равное количеству образцов. Таким образом, вы можете сделать

\addplot[very thick,black,mark=*,mark options={fill=white},domain=1:6, mark repeat=1000]  {F(x)+0.5};

для рисования второй половины, включая маркер. F— это функция, объявленная с помощью declare function, см. код ниже.

введите описание изображения здесь

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

Связанный контент