Pgfplots:将图例放在外面边缘吗?

Pgfplots:将图例放在外面边缘吗?

classsicthesis在博士论文中使用样式。由于这种样式在某种程度上倾向于使用外部边距来添加注释和内容,所以我想我也可以将图例放在那里。我用它pgfplots来创建它们。我对图进行了样式化,以便将图例放在图之外。我不知道如何解决的问题是(我真的想知道是否可以解决):

如何自动确定图表是在偶数页还是奇数页,以便图例始终出现在外部边缘?

目前,我只能通过在每个图的代码中放置以下两行来手动完成此操作:

 legend style={at={(-0.1,1)}, anchor=north east}, %for even pages
%legend style={at={( 1.1,1)}, anchor=north west}, %for odd pages

并(取消)注释相应的行 - 当然,这根本不实用。自动化解决方案会很棒 - 否则对于包含大量图表的冗长文档来说,这不值得。

PS:我在 Ubuntu 11.10 上使用 TexLive 2011

编辑:我认为这个问题是一个普遍的问题,但我可能错了,因此我创建了以下 MWE 来说明它对替代答案的帮助:

\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[
% legend style={at={(-0.1,1)}, anchor=north east}, %for even pages
legend style={at={( 1.1,1)}, anchor=north west}, %for odd pages
]
\addplot coordinates { (0,0) (1,1) };
\addlegendentry{Legend entry}
\end{axis}
\end{tikzpicture}
\end{document}

答案1

假设奇数页总是在一侧,偶数页在另一侧,则可以添加包 ifthen

\usepackage{ifthen}

然后使用页码来确定侧面

\ifthenelse{\isodd{\value{page}}}{\def\eastwest{north east}}{\def\eastwest{north west}}

即,如果您要将图包装在一个图中,则只需在图形环境中使用该行即可。现在用以下代码替换您已有的行

legend style={at={(-0.1,1)}, anchor=\eastwest},

我不确定这将如何与浮点数相互作用,但我想它会起作用。

答案2

这个答案依赖于ifoddpage包。我将 yaxis 标签放在外部(还是内部?)边距中,而图例则放在另一侧。要创建 mwe,我将使用以下两个文件(以使代码更短)。首先是主要文件:

\documentclass{article}
\usepackage{pgfplots}
\usepackage{float}
\usepackage{ifoddpage}


\begin{document}

\begin{figure}[H]
  \input{figure}
  \caption{first figure}
\end{figure}

\newpage

\begin{figure}[H]
  \input{figure}
  \caption{first figure}
\end{figure}

\end{document}

以及figure.tex文件:

\checkoddpage
\ifoddpage
\def\eastweststyle{legend style={at={(1.05,0)}, anchor=north west},ylabel near ticks, yticklabel pos=left}
\else
\def\eastweststyle{legend style={at={(-0.05,0)}, anchor=north east}, ylabel near ticks, yticklabel pos=right}
\fi

\centering
\begin{tikzpicture}[trim axis left,trim axis right]

  \begin{axis}[
      \eastweststyle, %for odd pages
       ylabel=y,
      ]
    \addplot coordinates { (0,0) (1,1) };
    \addlegendentry{Legend entry}
  \end{axis}
\end{tikzpicture}

它运行良好但仍然存在一些问题。

  • 我无法\checkoddpage在新命令中或在 中使用 and further pgfplotsstyle。如果我这样做,我会得到一个missing endscname错误。所以我每次都必须重写这几行...
  • 要将其与组图一起使用,需要进行一些更改。请参阅这个问题

相关内容