Tikz:绘制 S 形(逻辑)函数的切线

Tikz:绘制 S 形(逻辑)函数的切线

我想要制作一个类似于下图的图表,但没有 x 轴标签。

在此处输入图片描述

这是我使用下面给出的代码得到的结果: 在此处输入图片描述

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
    \begin{axis}%
    [
        %grid=major,     
        xmin=-6,
        xmax=6,
        axis x line=bottom,
        ytick={0,0.1,...,1},
        ymax=1.1
       % axis y line=middle,
    ]
        \addplot%
        [
            blue,%
            mark=none,
            samples=100,
            domain=-6:6,
        ]
        (x,{1/(1+exp(-x))});
    \end{axis}
\end{tikzpicture}
\end{document}

我无法得到 S 形曲线上的切线和图 1 中没有 x 轴标签的图形周围的框。任何帮助都将不胜感激。谢谢

答案1

要删除顶部和右侧的勾号,您可以添加xtick pos=leftytick pos=left

您可以使用和命令在您的图上定义 两个coordinate [pos=0.66] (A)坐标 。coordinate [pos=0.7] (B)addplot

\documentclass[margin=5mm]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{calc}
\pgfplotsset{compat=1.8}
\begin{document}
\begin{tikzpicture}
    \begin{axis}%
    [
        %grid=major,     
        xmin=-6,
        xmax=6,
        xtick pos=left,
        ytick pos=left,
        ytick={0,0.1,...,1.1},
        ymax=1.1,
        yticklabel style={
        /pgf/number format/precision=1,
        /pgf/number format/fixed,
        /pgf/number format/fixed zerofill}
       % axis y line=middle,
    ]
        \addplot%
        [
            blue,%
            mark=none,
            samples=100,
            domain=-6:6,
        ]
        (x,{1/(1+exp(-x))})
        coordinate [pos=0.66] (A)
        coordinate [pos=0.7] (B);
        \coordinate (C) at (A|-B) ;
        \draw (A)--(C)node[midway,left]{\scriptsize $\beta \pi(a-\pi)$};
        \draw (B)--(C)node[midway,above]{\scriptsize $1$};
        \draw ($(A)!-1!(B)$)--($(B)!-1!(A)$);
    \end{axis}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案2

如果你想删除标签,那么写

xticklabels={\empty}

如果你也想删除勾选,请添加

xtick={\empty}

但是,您的图表与您在问题中发布的图像略有不同,因此如果您确实想要这种轴,请删除或注释掉此行

axis x line=bottom,

为了绘制切线,因为它仅用于说明目的,我使用decorations.markings库沿着图放置了一个节点,并将其放置在西南角和东北角与图最匹配的位置,因此沿着该对角线放置一条线,延伸两个极端,瞧瞧

节点是使用标签添加的,但您也可以使用装饰节点作为参考来使用节点。

最后,为了设置带有小数的标签,您可以将以下代码添加到轴选项中:

y tick label style={
        /pgf/number format/.cd,
            fixed,
            fixed zerofill,
            precision=1,
        /tikz/.cd
    },

输出

示例图片

代码

\documentclass[margin=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.8}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
    \begin{axis}%
    [
        %grid=major,     
        xmin=-6, xmax=6,
        ymax=1.1,
        ytick={0,0.1,...,1},       
        xtick={\empty},
        xticklabels={\empty},
        y tick label style={
        /pgf/number format/.cd,
            fixed,
            fixed zerofill,
            precision=1,
        /tikz/.cd
        },
    ]
        \addplot%
        [
            blue,%
            mark=none,
            samples=100,
            domain=-6:6,
            decoration={
                markings,
                mark=at position 0.72 with {%
                    \node[minimum size=2.5mm, inner sep=0, 
                        label=90:{\scriptsize\sffamily 1}, 
                        label=180:{\scriptsize $\beta\pi(1-\pi)$}] (a) {};}
            },postaction=decorate
        ]
        (x,{1/(1+exp(-x))});
    \end{axis}
    \draw[blue, shorten <=-8mm, shorten >=-8mm] (a.south west) -- (a.north east);
    \draw[blue] (a.south west) -- (a.north west) -- (a.north east);
\end{tikzpicture}
\end{document}

答案3

为了好玩:pstricks-add可以使用以下命令轻松绘制曲线上特定点的切线\psplotTangent

\documentclass[svgnames, border=4pt]{standalone}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{fourier}
\usepackage{ pstricks-add}
\usepackage{auto-pst-pdf}
\def\F{1/(1 + EXP(-x))}
\def\Fx{(EXP(-x))/((1 + EXP(-x))^2)}

\begin{document}

\psset{yunit=10cm, arrowinset=0.15, labelFontSize=\footnotesize, tickwidth =0.6pt}
\begin{pspicture*}(-7,-1)(6.1,1.06)
    \psaxes[axesstyle=frame, linecolor=SteelBlue, tickcolor=SteelBlue, labels=y, Dy=0.1, ticks=y, yticksize=-3pt 0pt, %xticksize=0pt -3pt,
    yDecimals=1,](-6,0)(-6,-0.06)(6,1.06)%(-6,0.06)
    \psset{linewidth=1.2pt, plotpoints=200, plotstyle=curve,algebraic, labelsep=0.5em}
    \psplot[linecolor =IndianRed]{-6}{6}{\F}%{1/(1 + EXP(-x))}%
    \psplotTangent[Derive=(\Fx), linewidth=0.6pt, linecolor=SteelBlue, showpoints]{2}{3}{\F}
    \psCoordinates[linestyle=none, linewidth=0.4pt, showpoints=false](*2 {\F})
    %\psset{origin = {0,-0.06}}
    \psaxes[ linewidth=0.6pt, linecolor=SteelBlue, tickcolor=SteelBlue, labels=x, Ox=-6, ticks=x, xticksize=0pt -3pt, xlabelPos =bottom](-6,-0.06)(-6,-0.06)(6,-0.06)%
\end{pspicture*}

\end{document}

在此处输入图片描述

相关内容