如何在 pgfplots 中使用 \input 命令?

如何在 pgfplots 中使用 \input 命令?

我必须创建一组groupplotspgfplots并希望使用一个集中的绘图样式定义(宽度、高度、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} 

enter image description here

答案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}

在上面的代码中我只使用了必要的包。

enter image description here

相关内容