这个问题处理与对齐的一组图中的居中图例放置groupplots
。但是,正如 OP 在评论中所述,(接受的) 解决方案需要进行一些手动调整。
groupplots
我怀疑可能有更好的方法来做到这一点,也许使用生成的每个图的节点group cxry
,其中x
是列数,y
是行数。
但是,这些节点直到(我猜?)groupplots
完成绘制(如果我错了请纠正我!)才会存在。到那时,图例已经绘制完毕。
我想到了一些可能性,但似乎都行不通:
也许使用类似的东西
($(group c1r1)!.5!(group c2r1)$)
?或者使用来
axis cs
指定坐标,以及像y
的交点?-| (current page.center)
x
理想情况下,您可以指定 agroup legend at={(0.5,1)}
或者可能像positioning
a 的作用group legend at=below plot
或类似的东西。
我明白,除此之外,我总是需要对图的数量有某种了解,这样我才能决定它是group c2r1
或group c3r1
,但在这一点上,更让我困扰的是它们之间的中心问题。
下面的 MWE 显示了这一点:我可以自动放置节点我想要图例的地方,我可以手动放置图例距离该节点相对较近。但我想知道是否有办法自动放置图例那里。
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary[pgfplots.groupplots,calc]
\pgfplotsset{
compat=1.11,
horizontal legend/.style={
every axis legend/.append style={
at={(0.2,1.18)}, anchor=south east, draw=none, font=\footnotesize,
draw=none,
/tikz/every even column/.append style={column sep=0.3cm},
},
legend cell align=left,
legend columns=4,
},
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[
small,
group style={group size=2 by 1},
]
\nextgroupplot[]
\addplot[red] [domain=0:2*pi] {sin(deg(x)};
\addplot[blue] [domain=0:2*pi] {cos(deg(x)};
\nextgroupplot[horizontal legend]
\addplot[red] [domain=0:pi] {sin(deg(x)};
\addlegendentry{sin}
\addplot[blue] [domain=0:pi] {cos(deg(x)};
\addlegendentry{cos}
\end{groupplot}
\path ($(group c1r1.north)!.5!(group c2r1.north)$) ++ (0,1) node {HERE};
\end{tikzpicture}
\end{figure}
\end{document}
\documentclass{article}
\usepackage{pgfplots}
\usetikzlibrary[pgfplots.groupplots,calc]
\pgfplotsset{
compat=1.11,
horizontal legend/.style={
every axis legend/.append style={
at={(0.2,1.18)}, anchor=south east, draw=none, font=\footnotesize,
draw=none,
/tikz/every even column/.append style={column sep=0.3cm},
},
legend cell align=left,
legend columns=4,
},
}
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{groupplot}[
small,
group style={group size=2 by 1},
]
\nextgroupplot[]
\addplot[red] [domain=0:2*pi] {sin(deg(x)};
\addplot[blue] [domain=0:2*pi] {cos(deg(x)};
\nextgroupplot[horizontal legend]
\addplot[red] [domain=0:pi] {sin(deg(x)};
\addlegendentry{sin}
\addplot[blue] [domain=0:pi] {cos(deg(x)};
\addlegendentry{cos}
\end{groupplot}
\path ($(group c1r1.north)!.5!(group c2r1.north)$) ++ (0,1) node {HERE};
\end{tikzpicture}
\end{figure}
\end{document}