我想要做的是在 tikz 中的 foreach 循环内自动创建数据文件的文件名。也许最好先展示一个最小示例:
\documentclass{standalone}
\usepackage{tikz,pgfplots,pgfplotstable}
\pgfplotstableset{%
col sep=semicolon,
x index=0,
y index=1,
}
\usetikzlibrary{fpu}
\usepackage{filecontents}
\begin{filecontents}{(TA0.04)(T0.08).txt}
1;1
2;2
3;3
\end{filecontents}
\begin{filecontents}{(TA0.04)(T0.09).txt}
2;1
3;2
5;3
\end{filecontents}
\begin{filecontents}{(TA0.04)(T0.10).txt}
4;1
5;2
8;3
\end{filecontents}
\begin{document}
\begin{tikzpicture}
\def\TA{0.04}
\begin{axis}[xlabel=$x$, ylabel=$y$]
\foreach \A in {0.04,0.05,0.06} {
\pgfkeys{/pgf/fpu,/pgf/fpu/output format=fixed}
\pgfmathsetmacro{\T}{\TA+\A}
\pgfmathroundtozerofill{\T}
\addplot table {(TA\TA)(T\T).txt};
}
\end{axis}
\end{tikzpicture}
\end{document}
在这个小小的 tikz 图片中,我想要执行以下操作(并且我必须对相当大的一组数据文件和不同的起始值执行此操作)。
- 首先,我想为 \TA 定义一个起始值,我已经使用 \def 完成了……
- 给定循环数字列表,我想为每个循环计算一个当前变量 \T,它表示 \TA 和当前循环变量 \A 的总和
- 现在,给定这三个数字,我想从我的数据文件中加载数据(请参阅文件名的序言)
这是我的问题...
当总和等于0.10我收到错误:
... 无法读取表格文件‘(TA0.04)(T0.1).txt’。...
因为 \T 的值是0.1并不是0.10。
我的文件名中的每个数字都恰好是两位数,但有时最后一个数字是零,如上所示。我尝试用 来解决这个问题,\pgfmathroundtozerofill{\T}
但没有成功。
有人知道我该如何解决这个问题吗?我该如何修复数字的数量或将这些零添加到数字中???
PS 标题似乎与 tikz 的 foreach 语句中的数字格式,但这个问题对我没有帮助。因此我开始了现在的问题。
答案1
您几乎已经掌握了,您只需要在命令中使用\pgfmathresult
而不是。这是因为不会改变 的内容,而是将结果保存在 中。\T
\addplot
\pgfmathroundtozerofill
\T
\pgfmathresult