我编写了一个 latex 代码,它遍历两个数组并为数组的每个条目创建一个图。但是,我的 Texmaker 却出乎意料地卡住了(我的 CPU 完全发挥了处理能力——就像一个无限循环)。
代码的每个部分在语法上都是有意义的,但我想知道它在乳胶中是否有意义。
\documentclass{article}
\usepackage{fancyhdr}
\usepackage{setspace}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{colortbl}
\usepackage{graphicx}
\usepackage{subfigure}
\usepackage{epsfig}
\usepackage{multirow}
\usepackage{color}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usetikzlibrary{patterns}
\usepackage{subfig}
\usepackage{arrayjob}
\begin{document}
%%%%% This is the template for my plots
\newcommand{\plotprh}[3] {
\subfigure[$\ell=#1$]{%
\begin{tikzpicture}
\begin{axis}[
height=5cm,
width=6cm,
xlabel={$k'$},
ylabel={Percent (\%)},
legend pos=north west,
legend cell align=left,
ylabel style={at={(0.05,0.5)},font=\small},
xlabel style={at={(0.5,0.04)},font=\small},
legend style={at={(0.04,0.05)},anchor=south west, nodes={scale=0.8, transform shape},font=\small,}
]
\addplot[]
coordinates { % Precision
#2
};
\addplot[]
coordinates { % Recall
#3
};
\legend{Precision, Recall}
\end{axis}
\end{tikzpicture}
}
}
%%%%% Here is the data that I need which I put in two arrays
\newarray\recalls
\readarray{recalls}{ (1, 9.600000e-01) (2, 9.200000e-01) (3, 0.000000e+00) (4, 0.000000e+00) & (1, 9.600000e-01) (2, 9.600000e-01) (3, 0.000000e+00) (4, 0.000000e+00) }
\newarray\precisions
\readarray{precisions}{ (1, 8.099681e-01) (2, 7.699681e-01) (3, 0.000000e+00) (4, 0.000000e+00) & (1, 8.099681e-01) (2, 8.099681e-01) (3, 0.000000e+00) (4, 0.000000e+00) }
%%%%%% Here is how I try to plot it
\begin{figure}[h]
\centering
\foreach \index in {1, ..., 2}
{%
\plotprh{\index}{\precisions(\index)}{\recalls(\index)}
}%
\end{figure}
\end{document}
答案1
笔记:我不太确定您在这里期望什么输出。
arrayjob
下面的文档\readarray
(目前为第 3 页)指定应&
在数组中的每个条目之间使用。
请注意,您始终可以通过命令行/终端输入 来查找文档texdoc arrayjob
,这适用于任何软件包。该文档也可在以下位置找到:http://ctan.org/pkg/arrayjob
在下面的代码中,我没有使用arrayjob
,虽然你可能可以使用它,但还有其他方法可以创建数组而无需使用额外的包。由于您已经通过加载tikz
,pgfplots
我建议只使用那里描述的语法。此外,如果您在每个条目之间添加换行符,您的数据点会变得更容易阅读。我在这里将您的两个数组合并为一个,以方便使用。
输出
代码
\documentclass{article}
\usepackage{subfigure}
\usepackage{pgfplots}
%%%%% This is the template for my plots
\newcommand{\plotprh}[3] {
\subfigure[$\ell=#1$]{%
\begin{tikzpicture}
\begin{axis}[
height=5cm,
width=6cm,
xlabel={$k'$},
ylabel={Percent (\%)},
legend pos=north west,
legend cell align=left,
ylabel style={at={(0.05,0.5)},font=\small},
xlabel style={at={(0.5,0.04)},font=\small},
legend style={at={(0.04,0.05)},anchor=south west, nodes={scale=0.8, transform shape},font=\small,}
]
\addplot
coordinates { % Precision
#2
};
\addplot
coordinates { % Recall
#3
};
% \legend{Precision, Recall}
\end{axis}
\end{tikzpicture}
}
}
\def\plotData{%
{(1,9.600000e-01)}/{(1,8.099681e-01)},%
{(2,9.200000e-01)}/{(2,0.000000e+00)},%
{(3,0.000000e+00)}/{(3,0.000000e+00)},%
{(4,0.000000e+00)}/{(4,0.000000e+00)}%
}
\begin{document}
\begin{figure}[h]
\centering
\foreach \recall/\precision [count=\i] in \plotData
{%
\plotprh{\i}{\precision}{\recall}%
}%
\end{figure}
\end{document}