我想绘制一些插值曲线并遇到了以下命令
\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}