将图例添加到 pgf 图会导致 \end{axis} 错误

将图例添加到 pgf 图会导致 \end{axis} 错误

我使用 matlab2tikz 将 Matlab 图形导出到 tikz。这是一些线条的简单图,我需要标记它们。matlab2tikz 第一次没有自动添加图例条目,因此我从另一个 pgf 图复制/粘贴了图例命令。这也是我第一次在 Matlab2014 中使用它。这只是供参考,但可能与 pgf 问题无关。

下面我添加了 tikz/pgf 代码。如果我注释掉图例条目,它就会编译,但是当我取消注释时,我收到以下错误:

Missing } inserted \end{axis}

它指的是 \end{axis} 行,后面跟着一堆其他错误消息。

代码如下:

% This file was created by matlab2tikz v0.4.4 running on MATLAB 8.4.
% Copyright (c) 2008--2013, Nico Schlömer <[email protected]>
% All rights reserved.
% 
% The latest updates can be retrieved from
%   http://www.mathworks.com/matlabcentral/fileexchange/22022-matlab2tikz
% where you can also make suggestions and rate matlab2tikz.
% 
%
% defining custom colors

\documentclass{standalone}
\usepackage{tikz,pgfplots}
\newlength\figurewidth
\setlength{\figurewidth}{\textwidth}

\definecolor{mycolor1}{rgb}{0,0.447,0.741}%
\definecolor{mycolor2}{rgb}{0.85,0.325,0.098}%
\definecolor{mycolor3}{rgb}{0.929,0.694,0.125}%
\definecolor{mycolor4}{rgb}{0.494,0.184,0.556}%
\definecolor{mycolor5}{rgb}{0.466,0.674,0.188}%
%

\begin{document}
\begin{tikzpicture}

\begin{axis}[%
width=\figurewidth,
height=0.535665322580645\figurewidth,
unbounded coords=jump,
scale only axis,
every outer x axis line/.append style={darkgray!60!black},
every x tick label/.append style={font=\color{darkgray!60!black}},
xmin=-10,
xmax=10,
xlabel={Parameter},
every outer y axis line/.append style={darkgray!60!black},
every y tick label/.append style={font=\color{darkgray!60!black}},
ymode=log,
ymin=1e-06,
ymax=1000,
yminorticks=true,
ylabel={Error},
axis x line    *=bottom,
axis y line    *=left,
legend style={draw=darkgray!60!black,fill=white,legend cell align=left}
]
\addplot [
color=mycolor1,
solid,
forget plot
]
table[row sep=crcr]{
-10 0.257539245299513\\
10 0.278411090059315\\
};
\addlegendentry{Case 1};

\addplot [
color=mycolor2,
dashed,
forget plot
]
table[row sep=crcr]{
-10 0.0371047553354069\\
10 0.0338867959948958\\
};
\addlegendentry{Case 2};

\addplot [
color=mycolor3,
dotted,
forget plot
]
table[row sep=crcr]{
-10 0.0109546932939792\\
10 0.00673477512625754\\
};
\addlegendentry{Case 3};

\addplot [
color=mycolor4,
dash pattern=on 1pt off 3pt on 3pt off 3pt,
forget plot
]
table[row sep=crcr]{
-10 0.0010526474053356\\
10 0.000764939997185852\\
};
\addlegendentry{Case 4};

\addplot [
color=mycolor5,
solid,
mark=+,
mark options={solid},
forget plot
]
table[row sep=crcr]{
-10 0.000686338275055355\\
10 0.000758083080815557\\
};
\addlegendentry{Case 5};

\end{axis}
\end{tikzpicture}%
\end{document}

谢谢任何有用的见解;)

答案1

将我的评论扩展为答案。

问题在于使用forget plot。由于事实是pgfplots要忘记每个图,但另一方面又要为每个图定义一个图例条目,所以pgfplots不知道该怎么做。为了解决这个问题,根据期望的结果,给出了两种可能性。

  1. 从不同的图中删除所有内容\addlegendentry,因此将不会绘制图例。

  2. 删除至少一个forget plot以绘制图例。

答案2

我的解决方案是:

  • forget plot对我不想看到的条目和\addlegendentry我想看到的条目使用选项。
  • 删除所有 NAN 点。

如果我没有执行最后一步,错误就会一直出现

相关内容