我想要制作一个类似于下图的图表,但没有 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=left
和 ytick 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}