我必须创建一组groupplot
spgfplots
并希望使用一个集中的绘图样式定义(宽度、高度、x 轴标签等)。在我看来,这应该很容易做到,只需将定义收集到一个文件中,然后我就可以了input
。MWE 如下:
\documentclass[10pt]{article}
\usepackage{tikz}
\usepackage{fancyhdr}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\pgfplotsset{compat=1.12}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\begin{groupplot}[
width=6.0cm,height=4.0cm,
group style={group size=1 by 2},
xmin=0.0,xmax=1.0,xlabel=$x$,
% \input{style.tex} % does not work
]
\nextgroupplot[ymin=0.0,ymax=1.0,ylabel={$y_2$}]
\addplot table {
0.1 0.9
0.9 0.1
};
\nextgroupplot[ymin=0.0,ymax=1.0,ylabel={$y_1$}]
\addplot table {
0.1 0.2
0.9 0.8
};
\end{groupplot}
\end{tikzpicture}
\end{document}
该文件style.tex
包含以下内容:
width=6.0cm,height=4.0cm,
group style={group size=1 by 2},
xmin=0.0,xmax=1.0,xlabel=$x$,
如果我运行上述 MWE,pgfplots
它将按预期工作。如果我注释掉重现的行style.tex
并注释包含命令的行\input
,我会收到以下错误:
! Use of \pgfplots@@environment@groupplot doesn't match its definition.
\pgfutil@ifnextchar ...1\def \pgfutil@reserved@a {
#2}\def \pgfutil@reserved@...
l.17 ]
怎么会这样?我以为\input
命令相当于在输入文件中输入命令。
答案1
我认为最好的方法是使用 来定义样式\pgfplotsset{SomeStyleName/.style={<options>}}
。请注意,group style={...}
在新样式的定义中直接使用 不起作用(请参阅组样式键在 pgfplotsset 中不起作用),这就是我使用更详细的 的原因group/<key>=<value>
。
\documentclass[border=3mm]{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.12,
MyPlotStyle/.style={
width=6.0cm,
height=4.0cm,
xmin=0.0,
xmax=1.0,
xlabel=$x$,
group/group size=1 by 2
}
}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[
MyPlotStyle
]
\nextgroupplot[ymin=0.0,ymax=1.0,ylabel={$y_2$}]
\addplot table {
0.1 0.9
0.9 0.1
};
\nextgroupplot[ymin=0.0,ymax=1.0,ylabel={$y_1$}]
\addplot table {
0.1 0.2
0.9 0.8
};
\end{groupplot}
\end{tikzpicture}
\end{document}
答案2
请尝试以下操作:
\documentclass[10pt]{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\usepackage[active,tightpage]{preview}
\PreviewEnvironment{tikzpicture}
\pgfplotsset{compat=1.12}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\pgfplotsset{width=6.0cm,height=4.0cm, %<-- group plot "style": common options
group style = {group size=1 by 2},
xmin = 0, xmax = 1, xlabel=$x$,
ymin = 0, ymax = 1}
\begin{groupplot}
\nextgroupplot[ylabel={$y_2$}]
\addplot table {
0.1 0.9
0.9 0.1
};
\nextgroupplot[ylabel={$y_1$}]
\addplot table {
0.1 0.2
0.9 0.8
};
\end{groupplot}
\end{tikzpicture}
\end{document}
在上面的代码中我只使用了必要的包。