使用 pgfkeys 创建自定义 tikzpicture 命令并多次使用 addplot

使用 pgfkeys 创建自定义 tikzpicture 命令并多次使用 addplot

考虑一下这个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 中文件名是连续的,但在我的实际示例中文件名不是按数字迭代的。因此我必须单独指定每个文件名。

相关内容