仅在分组 PGF 图的边缘显示标签

仅在分组 PGF 图的边缘显示标签

PGFplots 分组绘图库中的选项xlabels atylabels at应该只在整组绘图的对应侧显示轴标签,但它们似乎不起作用。我在这个例子中做错了什么,还是这是一个错误?

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.10}
\begin{document}
 \begin{tikzpicture}
  \begin{groupplot}[group style={group size=2 by 2,ylabels at=edge left,xlabels at=edge bottom}]
   \nextgroupplot[xlabel=a,ylabel=b]
   \addplot {x};
   \nextgroupplot[xlabel=foo,ylabel=b]
   \addplot {x};
   \nextgroupplot[xlabel=a,ylabel=fdsio]
   \addplot {x};
   \nextgroupplot[xlabel=foo,ylabel=fdsio]
   \addplot {x};
  \end{groupplot}
 \end{tikzpicture}
\end{document}

产生

输出

但这不是我想要的。只有底部和左边缘的标签应该出现。

我似乎记得这在过去是可行的,所以也许 PGFplots 1.10 中发生了一些变化?

答案1

在 pgfplots 1.10 版手册第 5.7 节第 384 页中,它引入了一个不使用groupplots库的等效图。话虽如此,此解决方案产生了一种替代方案,其中仅显示底部和左侧边缘的标签。

在此处输入图片描述

代码

\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.10}
\begin{document}
\begin{tikzpicture}
\begin{axis}[name=plot1,ylabel=b]
   \addplot {x};
\end{axis}
\begin{axis}[name=plot2,at={($(plot1.east)+(1cm,0)$)},anchor=west]
   \addplot {x};
\end{axis}
\begin{axis}[name=plot3,at={($(plot1.south)-(0,1cm)$)},anchor=north,xlabel=a,ylabel=fdsio]
   \addplot {x};
\end{axis}
\begin{axis}[name=plot4,at={($(plot2.south)-(0,1cm)$)},anchor=north,xlabel=foo]
   \addplot {x};
\end{axis}
\end{tikzpicture}
\end{document}

答案2

根据我的评论,将 x 和 ylabels 放在每个图中是没有意义的。因此,根据手册,好的方法是将其直接放在 groupplot 选项中。另外,你犯了一个小错误,因为xlabels at不能有edge leftas 选项。

http://pgfplots.sourceforge.net/pgfplots.pdf第 383 页起。

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.10}
\begin{document}
 \begin{tikzpicture}
  \begin{groupplot}[group style={group size=2 by 2,ylabels at=edge left,xlabels at=edge bottom}, xlabel=bar, ylabel=toto]
   \nextgroupplot
   \addplot {x};
   \nextgroupplot
   \addplot {x};
   \nextgroupplot
   \addplot {x};
   \nextgroupplot
   \addplot {x};
  \end{groupplot}
 \end{tikzpicture}
\end{document}

在此处输入图片描述

答案3

我遇到了同样的问题,刚刚找到了一个解决方法:只需省略全局标签,仅为组图内位于边缘的图定义它们。

\documentclass{standalone}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.10}
\begin{document}
 \begin{tikzpicture}
  \begin{groupplot}[group style={group size=2 by 2}]
   \nextgroupplot[ylabel=b]
   \addplot {x};
   \nextgroupplot[]
   \addplot {x};
   \nextgroupplot[xlabel=a,ylabel=fdsio]
   \addplot {x};
   \nextgroupplot[xlabel=foo]
   \addplot {x};
  \end{groupplot}
 \end{tikzpicture}
\end{document}

相关内容