根据 y 域限制在函数图的末端放置箭头

根据 y 域限制在函数图的末端放置箭头

我正在使用 Tikz/PGF 制作图表,并希望指定轴限度内的图表末端带有箭头。如果图表通过设置domain=-10:10或等效方式超出窗口的“侧面”,则很容易做到这一点,但如果图表超出“顶部/底部”,则不那么容易,此时需要截断 $y$ 值。对于线性函数或其他简单表达式来说,这不是什么大问题,我们可以“求解”域中图表超出范围的点并限制 $x$ 域,但这对一般函数来说很糟糕,我不想手动调整所有这些域限制。

尝试调用restrict y to domain=-11:11似乎无法在正确的位置剪切图形,如下面的代码所示:

\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows,arrows.meta}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    width=8cm,
    axis lines=center,
    axis equal image=true,
    axis line style={stealth-stealth},
    xlabel=$x$,
    ylabel=$y$,
    xmin=-11, xmax=11,
    xtick={-10,10},
    xticklabels={$-10$,$10$},
    ymin=-11, ymax=11,
    ytick={-10,10},
    yticklabels={$-10$,$10$},
    minor x tick num=19,
    minor y tick num=19,
    %domain=-10:10,
    %restrict x to domain=-11:11,
    restrict y to domain=-11:11,
    %y domain=-11:11,
]
\addplot[red,very thick,Stealth-Stealth]{2*x+3};
%,domain=-7:4
\node[label={180:{$(0,3)$}},circle,fill,inner sep=1.5pt] at (axis cs:0,3) {};
\node[label={0:{$(1,5)$}},circle,fill,inner sep=1.5pt] at (axis cs:1,5) {};
\end{axis}
\end{tikzpicture}

\end{document}

代码输出

它似乎在 $y=-7$ 处停止,而不是在 $y=-11$ 处停止,并且添加/删除注释行或规范的其他组合ymax, ymin似乎没有帮助。在另一篇文章中似乎没有这个问题:如何向多项式 Tikz 添加箭头。唯一有效的方法是包括所需范围的明确域domain=-7:4

答案1

您应该将domain=-11:11和添加restrict y to domain=-11:11axis选项中,因为这将扩大绘图范围,使其覆盖 -11 ≤X≤ 11,但也会切掉部分< -11 且>11。

然而,这并不会完全导致这样的情节:= -11 至= 11,这是由于样本量错误造成的。如果将samples=23(11 + 11 + 1) 相加,这样我们就可以为每个X如果您将整数/步长作为\addplot命令的选项,您将得到您想要的结果:

\documentclass[border=10pt]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\usetikzlibrary{arrows.meta}

\begin{document}

\begin{tikzpicture}
\begin{axis}[
    width=8cm,
    axis lines=center,
    axis equal image=true,
    axis line style={stealth-stealth},
    xlabel=$x$,
    ylabel=$y$,
    xmin=-11, xmax=11,
    xtick={-10,10},
    ymin=-11, ymax=11,
    ytick={-10,10},
    minor x tick num=19,
    minor y tick num=19,
    domain=-11:11,
    restrict y to domain=-11:11,
]
\addplot[red,very thick,Stealth-Stealth,samples=23] {2*x+3};
\node[label={180:{$(0,3)$}},circle,fill,inner sep=1.5pt] at (axis cs:0,3) {};
\node[label={0:{$(1,5)$}},circle,fill,inner sep=1.5pt] at (axis cs:1,5) {};
\end{axis}
\end{tikzpicture}

\end{document}

在此处输入图片描述

顺便说一句,您可能只需要arrows.meta库,可以省略arrows库。您也可以省略xticklabels={$-10$,$10$}和,yticklabels={$-10$,$10$}因为这已经通过xtick={-10,10}和隐式设置ytick={-10,10}

相关内容