考虑一下这个MWE:
\documentclass{article}
\usepackage{tikz,pgfplots}
\usepackage{pgfkeys}
\usepackage{xparse}
\usepackage{filecontents}
% DATA 1
\begin{filecontents*}{data1.txt}
1 1
2 4
3 9
4 16
5 25
\end{filecontents*}
% DATA 2
\begin{filecontents*}{data2.txt}
1 15
2 10
3 7
4 5
5 2
6 1
\end{filecontents*}
% see https://tex.stackexchange.com/questions/393622/using-key-values-in-newdocumentcommand
\pgfkeys{/myplot/.is family, /myplot,
filename/.initial=data.txt,
linecolor/.initial=black,
}
\newcommand\myplotvals[1]{\pgfkeysvalueof{/myplot/#1}}
\NewDocumentCommand\myplot{m} {
\begin{tikzpicture}
\pgfqkeys{/myplot}{#1}% keep key changes local
\begin{axis}
\addplot [\myplotvals{linecolor},mark=none] table {\myplotvals{filename}};
\end{axis}
\end{tikzpicture}
}
\begin{document}
\myplot{filename=data1.txt,linecolor=red}
\end{document}
使用pgfkeys
我创建的命令,\myplot
它将 .txt 中的数据作为输入,您可以选择设置线条颜色。
这对于 1 个数据集很有效。我的问题是,有人知道如何调整此方法以允许添加多个数据集吗?
在我的 MWE 中,我包含了第二个数据集,名为data2.txt
。我希望命令执行的操作基本上是生成类似以下内容的内容:
\begin{tikzpicture}
\begin{axis}
\addplot [red,mark=none] table {data1.txt};
\addplot [blue,mark=none] table {data2.txt};
\end{axis}
\end{tikzpicture}
n
基本上,如果我可以指定第二个 .txt 文件(或可能是文本文件),它会根据需要自动添加更多命令,那就太好了\addplot
。这有可能做到吗?我不知道输入应该是什么样子,也许是这样的\myplot{filename={data1.txt,data2.txt},linecolor={red,blue}}
?但也许这不起作用?
更新
需要说明的是,虽然在我的 MWE 中文件名是连续的,但在我的实际示例中文件名不是按数字迭代的。因此我必须单独指定每个文件名。