如何正确地在 TikZ 中为 /draw plot 命令添加标签?

如何正确地在 TikZ 中为 /draw plot 命令添加标签?

我想绘制一些插值曲线并遇到了以下命令

\draw plot[smooth] coordinates {(1,1) (4,8) (6,3) (8,9)};

这看起来很不错。现在我想添加一些标签,并找到了一些信息这里(标记由“绘图函数”生成的函数图)这里(如何使用 \draw plot 标记使用 tikz 绘制的路径?)

现在我的解决方案是这样的:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}

\begin{document}
  \begin{tikzpicture}[label/.style={postaction={decorate,
     transform shape,
     decoration={markings,mark=at position 0.5 with \node #1;}}}]
  \draw[help lines] (0,0) grid (10,10);
  \draw[->,label={[above]{1}}] plot[smooth] coordinates {(1,1) (4,8) (6,3) (8,9)};
\end{tikzpicture}
\end{document}

一切似乎都正常,但有一次我遇到了一个我无法理解或解决的错误。如果我将其更改mark=at position为小于的值,0.4它仍然会产生所需的输出,但会给我以下错误消息。

! Dimension too large.
<to be read again> 
                   \relax 
l.10 ...th] coordinates {(1,1) (4,8) (6,3) (8,9)};

! Dimension too large.
<recently read> \pgfmath@x 

l.10 ...th] coordinates {(1,1) (4,8) (6,3) (8,9)};

! Dimension too large.
<to be read again> 
                   \relax 
l.10 ...th] coordinates {(1,1) (4,8) (6,3) (8,9)};

知道那里发生了什么事或如何解决吗?非常感谢。

答案1

和装饰之间的冲突smooth已经出现在这里;最近的例子是为平滑的 tikz 函数添加箭头。在您的具体情况下,一种避免“尺寸太大”错误并允许您继续使用 的变通方法smooth是在装饰中使用pre length=1pt, post length=1pt。对于下面的示例,我将其更改为具有两个参数的样式,以便能够控制装饰的位置,但您可以使用原始设置:

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}

\begin{document}
\begin{tikzpicture}[
label/.style 2 args={
  postaction={
    decorate,
    transform shape,
    decoration={
      pre length=1pt, post length=1pt,
      markings,
      mark=at position #1 with \node #2;
      }
  }
}  
]
\draw[help lines] (0,0) grid (10,10);
\draw[->] plot[smooth] coordinates {(1,1) (4,8) (6,3) (8,9)} [
  label={0}{[above]{1}},
  label={0.05}{[above]{1}},
  label={0.1}{[above]{1}},
  label={0.15}{[above]{1}},
  label={0.2}{[above]{1}},
  label={1.25}{[above]{1}}
  ];
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容