PGFplots 分组绘图库中的选项xlabels at
和ylabels 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 left
as 选项。
看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}