我正在尝试使用该包将两个图形并排放置subfig
(我过去曾这样做过,甚至使用tikzpicture
s)但我遇到了一个问题。
每当我尝试编译我的文档时,我都会收到多个错误,包括:
Paragraph ended before \pgfplots@addplotimpl@table@startprocessing was complete. }
Extra }, or forgotten \endgroup. }
Package PGF Math Error: Sorry, an internal routine of the floating point unit '0.0'.. }
Illegal unit of measure (pt inserted). }
尝试调试这个,我评论了tikzpicture
环境并且它编译成功,然后我评论了除tikzpicture
部分之外的所有内容并且它再次编译!
什么可能导致这组错误?
我的 MWE 是:
\documentclass[12pt,letterpaper,twoside]{report}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{subfig}
\begin{document}
\begin{figure}
\centering
\subfloat[caption1.]
{\label{label1}%
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=red},b={draw=blue}},
xlabel={Pieza},
ylabel={Medición},legend pos=outer north east]
\addplot[scatter,only marks,ycomb,%
scatter src=explicit symbolic]%
table[meta=label] {
x y label
1 0.2842 a
2 0.2985 a
3 0.2509 a
4 0.2314 a
5 0.2091 a
6 0.2046 a
7 0.3177 a
8 0.215 a
9 0.2057 a
10 0.2244 a
};
\addplot[scatter,only marks,ycomb,%
scatter src=explicit symbolic]%
table[meta=label] {
x y label
1 0.1284 b
2 0.1857 b
3 0.1068 b
4 0.2618 b
5 0.2061 b
6 0.3119 b
7 0.3589 b
8 0.2599 b
9 0.2745 b
10 0.2044 b
};
\legend{LVDT,CMM}
\end{axis}
\end{tikzpicture}
}
\quad
\subfloat[caption2.]
{\label{label2}%
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=black}},
xlabel={Temperatura (\(^{\circ}\)C)},
ylabel={Perpendicularidad (\(^{\circ}\)}]
\addplot[scatter,only marks,%
scatter src=explicit symbolic]%
table[meta=label] {
x y label
51.24 -0.4545 a
60.13 0.046 a
58.68 -0.1905 a
54.03 -0.339 a
55.16 0.3885 a
56.62 0.1 a
54.09 0.0365 a
58.06 -0.1215 a
57.05 0.126 a
52.26 0.4025 a
};
\end{axis}
\end{tikzpicture}
}
\caption{caption3}\label{label3}
\end{figure}
\end{document}
我评论的tikzpicture
环境MWE是:
\documentclass[12pt,letterpaper,twoside]{report}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{subfig}
\begin{document}
\begin{figure}
\centering
\subfloat[caption1.]
{\label{label1}%
% \begin{tikzpicture}
% \begin{axis}[%
% scatter/classes={%
% a={mark=o,draw=red},b={draw=blue}},
% xlabel={Pieza},
% ylabel={Medición},legend pos=outer north east]
% \addplot[scatter,only marks,ycomb,%
% scatter src=explicit symbolic]%
% table[meta=label] {
% x y label
% 1 0.2842 a
% 2 0.2985 a
% 3 0.2509 a
% 4 0.2314 a
% 5 0.2091 a
% 6 0.2046 a
% 7 0.3177 a
% 8 0.215 a
% 9 0.2057 a
% 10 0.2244 a
%
%
% };
% \addplot[scatter,only marks,ycomb,%
% scatter src=explicit symbolic]%
% table[meta=label] {
% x y label
% 1 0.1284 b
% 2 0.1857 b
% 3 0.1068 b
% 4 0.2618 b
% 5 0.2061 b
% 6 0.3119 b
% 7 0.3589 b
% 8 0.2599 b
% 9 0.2745 b
% 10 0.2044 b
%
%
%
% };
% \legend{LVDT,CMM}
%
% \end{axis}
% \end{tikzpicture}
}
\quad
\subfloat[caption2.]
{\label{label2}%
% \begin{tikzpicture}
% \begin{axis}[%
% scatter/classes={%
% a={mark=o,draw=black}},
% xlabel={Temperatura (\(^{\circ}\)C)},
% ylabel={Perpendicularidad (\(^{\circ}\)}]
% \addplot[scatter,only marks,%
% scatter src=explicit symbolic]%
% table[meta=label] {
% x y label
% 51.24 -0.4545 a
% 60.13 0.046 a
% 58.68 -0.1905 a
% 54.03 -0.339 a
% 55.16 0.3885 a
% 56.62 0.1 a
% 54.09 0.0365 a
% 58.06 -0.1215 a
% 57.05 0.126 a
% 52.26 0.4025 a
%
% };
% \end{axis}
% \end{tikzpicture}
}
\caption{caption3}\label{label3}
\end{figure}
\end{document}
除了 s 评论之外,我的 MWE 其余内容tikzpicture
如下:
\documentclass[12pt,letterpaper,twoside]{report}
\usepackage{pgfplots}
\usepackage{pgfplotstable}
\usepackage{subfig}
\begin{document}
% \begin{figure}
% \centering
% \subfloat[caption1.]
% {\label{label1}%
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=red},b={draw=blue}},
xlabel={Pieza},
ylabel={Medición},legend pos=outer north east]
\addplot[scatter,only marks,ycomb,%
scatter src=explicit symbolic]%
table[meta=label] {
x y label
1 0.2842 a
2 0.2985 a
3 0.2509 a
4 0.2314 a
5 0.2091 a
6 0.2046 a
7 0.3177 a
8 0.215 a
9 0.2057 a
10 0.2244 a
};
\addplot[scatter,only marks,ycomb,%
scatter src=explicit symbolic]%
table[meta=label] {
x y label
1 0.1284 b
2 0.1857 b
3 0.1068 b
4 0.2618 b
5 0.2061 b
6 0.3119 b
7 0.3589 b
8 0.2599 b
9 0.2745 b
10 0.2044 b
};
\legend{LVDT,CMM}
\end{axis}
\end{tikzpicture}
%}
% \quad
% \subfloat[caption2.]
% {\label{label2}%
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=black}},
xlabel={Temperatura (\(^{\circ}\)C)},
ylabel={Perpendicularidad (\(^{\circ}\)}]
\addplot[scatter,only marks,%
scatter src=explicit symbolic]%
table[meta=label] {
x y label
51.24 -0.4545 a
60.13 0.046 a
58.68 -0.1905 a
54.03 -0.339 a
55.16 0.3885 a
56.62 0.1 a
54.09 0.0365 a
58.06 -0.1215 a
57.05 0.126 a
52.26 0.4025 a
};
\end{axis}
\end{tikzpicture}
%}
% \caption{caption3}\label{label3}
%\end{figure}
\end{document}
答案1
问题是您要求从中的参数pgfplotstable
读取内联表格数据。一旦展开宏,这个带括号的参数就会被标记,结果是表格数据中的单个行尾与空格变得无法区分:标记后两者都变为空格标记1。直接的后果是无法读取表格,因为它看不到行在哪里结束。...
\subfloat[caption x.]{...}
\subfloat
pgfplotstable
有几种方法可以解决这个问题。取决于其他提供 subcaption 的类似包环境已经实现(例如,subcaption
有一个subfigure
环境),只需切换到这样的解决方案就可以了。但如果环境主体被理解为分隔参数,这是一种可能性,问题仍然存在。
另一种方法(也是我在此建议的方法)是在其他地方读取表格数据,在单个行尾与空格截然不同的地方。这可以通过\pgfplotstableread
允许读取表格数据并将结果存储在您选择的宏中的命令来完成。
我添加了\pgfplotsset{compat=1.16}
以确保代码的可重复性。我还将文档设置为横向模式,否则由于空间不足,两个子图的排列不会很引人注目——当然,您可以找到其他纵向模式的解决方案。
\documentclass[landscape]{article}
\usepackage{geometry}
\usepackage{pgfplots}
\pgfplotsset{compat=1.16}
\usepackage{pgfplotstable}
\usepackage{subfig}
\pgfplotstableread{
x y label
1 0.2842 a
2 0.2985 a
3 0.2509 a
4 0.2314 a
5 0.2091 a
6 0.2046 a
7 0.3177 a
8 0.215 a
9 0.2057 a
10 0.2244 a
}\myFirstTable
\pgfplotstableread{
x y label
1 0.1284 b
2 0.1857 b
3 0.1068 b
4 0.2618 b
5 0.2061 b
6 0.3119 b
7 0.3589 b
8 0.2599 b
9 0.2745 b
10 0.2044 b
}\mySecondTable
\pgfplotstableread{
x y label
51.24 -0.4545 a
60.13 0.046 a
58.68 -0.1905 a
54.03 -0.339 a
55.16 0.3885 a
56.62 0.1 a
54.09 0.0365 a
58.06 -0.1215 a
57.05 0.126 a
52.26 0.4025 a
}\myThirdTable
\begin{document}
\begin{figure}
\centering
\subfloat[caption1.]
{%
\label{label1}%
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=red},b={draw=blue}},
xlabel={Pieza},
ylabel={Medición},legend pos=outer north east]
\addplot[scatter, only marks, ycomb, scatter src=explicit symbolic]
table[meta=label] {\myFirstTable};
\addplot[scatter, only marks, ycomb, scatter src=explicit symbolic]
table[meta=label] {\mySecondTable};
\legend{LVDT,CMM}
\end{axis}
\end{tikzpicture}%
}%
\quad
\subfloat[caption2.]
{%
\label{label2}%
\begin{tikzpicture}
\begin{axis}[%
scatter/classes={%
a={mark=o,draw=black}},
xlabel={Temperatura (\(^{\circ}\)C)},
ylabel={Perpendicularidad (\(^{\circ}\))}]
\addplot[scatter, only marks, scatter src=explicit symbolic]
table[meta=label] {\myThirdTable};
\end{axis}
\end{tikzpicture}%
}%
\caption{caption3}\label{label3}
\end{figure}
\end{document}
脚注
- 即字符代码为 32、类别代码为 10 的字符标记。