自动定位相对于组图中多个图的图例

自动定位相对于组图中多个图的图例

这个问题处理与对齐的一组图中的居中图例放置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)}或者可能像positioninga 的作用group legend at=below plot或类似的东西。

我明白,除此之外,我总是需要对图的数量有某种了解,这样我才能决定它是group c2r1group 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}

在此处输入图片描述

相关内容