TikZ:在节点中使用 pos = x

TikZ:在节点中使用 pos = x

为什么在命令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 进行数学运算,因此不能保证由许多非常短的子路径组成的路径非常准确。

相关内容