由此代码生成:
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xticklabel={\day/\month},
xticklabel style={rotate=90,anchor=near xticklabel},
axis y line=none,
axis x line=bottom,
xmin = 2020-01-25
]
\addplot +[color=black,no marks,ultra thick]
table[x=date,y=HUN] {tables/policies_time.txt} node[left,pos=0] {HUN};
\addplot +[color=black,no marks,ultra thick]
table[x=date,y=DEU] {tables/policies_time.txt} node[left,pos=0] {DEU};
\addplot +[color=black,no marks,ultra thick]
table[x=date,y=AUT] {tables/policies_time.txt} node[left,pos=0] {AUT};
\end{axis}
\end{tikzpicture}
我想使用 for 循环,因为我有一组更大的国家。因此我创建了一个循环,并在 table[] 部分和标签节点部分中用运行变量 \isos 替换标签“HUN”、“DEU”和“AUT”。但这次标签出现错误,并且没有出现。
这是我的循环版本的代码:
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xticklabel={\day/\month},
xticklabel style={rotate=90,anchor=near xticklabel},
axis y line=none,
axis x line=bottom,
xmin = 2020-01-25
]
\makeatletter
\@for\isos:=HUN,DEU,AUT\do{
\addplot +[color=black,no marks,ultra thick] table[x=date,y=\isos] {tables/policies_time.txt}
node[left,pos=0] {\isos};
}
\makeatother
\end{axis}
\end{tikzpicture}
您有什么建议吗?如何解决这个问题?
谢谢你,
奥利弗
答案1
作为这个答案建议,如果以这种方式将\foreach
(或\@for
) 与组合,您将遇到扩展问题。但是,您可以这样使用:\addplot
\pgfplotsinvokeforeach
\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=1.17}
\usepgfplotslibrary{dateplot}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
date coordinates in=x,
xticklabel={\day/\month},
xticklabel style={rotate=90,anchor=near xticklabel},
axis y line=none,
axis x line=bottom,
xmin = 2020-01-25
]
\pgfplotsinvokeforeach{HUN,DEU,AUT}{
\addplot +[color=black,no marks,ultra thick]
table[x=date,y=#1] {tables/policies_time.txt} node[left,pos=0] {#1};
}
\end{axis}
\end{tikzpicture}
\end{document}
由于您没有提供任何数据来提供该图表,因此我无法真正测试这一点。