我正在使用 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:11
到axis
选项中,因为这将扩大绘图范围,使其覆盖 -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}
。