为什么在命令pos = x
中使用该节点时该选项不起作用plot
?
\documentclass[tikz]{standalone}
\begin{document}
\begin{tikzpicture}
\draw plot[domain = 0:2, samples = 100] ({\x}, {(\x)^2}) node[pos = 1.1]
{\(y = x^2\)};
\end{tikzpicture}
\end{document}
在这张图片中,f_{quad}
是我的节点应该在的pos = 1.1
。
此外,我将其设为等于什么并不重要pos
。它始终位于原点。
答案1
我的感觉是,这个plot
操作很特殊,TikZ 处理它的方式与典范路径被处理。引用手册:
绘制路径操作可用于将直线或曲线附加到经过大量坐标的路径。
这表明整个图都附加在路径上,因此这可能是nodes
只能附加在路径的开头或结尾的一个可能原因plot
。
但是,总是可以利用该decorations.markings
库作为解决方法。
一个例子:
\documentclass[tikz,png,border=10pt]{standalone}
\usetikzlibrary{decorations.markings}
\tikzset{insert node/.style args={#1 at #2}{
postaction=decorate,
decoration={
markings,
mark= at position #2
with
{
#1
}
}
}
}
\begin{document}
\begin{tikzpicture}
\draw[insert node={\node[red,left]{\(y = x^2\)};} at 0.65,
insert node={\node[blue,draw,right]{\(y = x^2\)};} at 0.45,
insert node={\node[green!80!black,above]{\(y = x^2\)};} at 1,
] plot[domain = 0:2, samples = 100] ({\x}, {(\x)^2});
\end{tikzpicture}
\end{document}
结果:
答案2
无论是否使用pos
键,除非指定了内部“计时器”命令,否则节点不会放置在子路径上,该命令决定了节点将如何沿着最后一个子路径(例如,直线或曲线)定位。路径构造命令指定适当的计时器,并设置计时器所需的其他参数。
对于绘图,没有指定计时器,而且很难看出它们是如何实现的,因为大多数绘图本质上都是由许多非常短的线到子路径组成的。即使设置了参数,最后一个子路径也会是一条非常短的直线(取决于样本数量),这意味着任何pos
值都会将节点置于绘图的末尾(或非常接近末尾)。
此外,如果在未指定计时器的情况下设置pos
键(这是绘图末尾的情况),则节点不会移动到任何位置(即使您使用at
),而是转储到原点(我并不是说这是可取的,这只是当前发生的情况)。如果删除键,pos
节点将放置在绘图的最后一个点的中心(取决于锚点)。
正如已经指出的那样,可以使用标记装饰,但是,正如手册所述,由于装饰使用 TeX 进行数学运算,因此不能保证由许多非常短的子路径组成的路径非常准确。