不同的方法

不同的方法

如何在等号处对齐图例方程式,知道此代码显示以下错误

缺少} 插入。\end{axis} ?

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{amsmath}

\begin{document}


\begin{tikzpicture}
\begin{axis}[
legend cell align=left,
legend style={legend pos=north west}
]
  \addplot[domain=0:2] {x^2};
  \addplot[domain=0:4] {x};
  \legend{
    \begin{align*}
    $yy&=x^2$\\
    $y&=x$
    \end{align*}
  }
\end{axis}
\end{tikzpicture}
\end{document}

编辑

此代码片段

\legend{
$\begin{aligned}
yy&=x^2\\
y&=x
\end{aligned}$
}

结果是

在此处输入图片描述

而这个

\legend{
$\begin{aligned}
yy&=x^2\\
y&=x\\ & \rule{0pt}{1ex}
\end{aligned}$
}

结果是

在此处输入图片描述

答案1

我不太清楚你到底想要什么。是这个吗?(我添加了颜色,以便可以区分线条。)

看起来,即使 中有两条线aligned,图例矩阵中的节点也只有一条线的高度。我不知道为什么会这样。下面的解决方法是首先使用\begin{aligned}[t]将 的第一条线放在aligned基线上。这使得 中的第一条线aligned与图例中的第一个图对齐。\

下一个关键任务是添加更多图例条目,每个附加图例条目一个。您不希望图例中出现更多文本,但您希望节点的高度与有文本时一样高。因此,添加一个\strut,这是一个具有一定高度(和深度)的零宽度框。

因此,如果您有两个图,则使用\legend{$\begin{aligned}[t]...\end{aligned}$, \strut }。如果您有三个图,则使用\legend{$\begin{aligned}[t]...\end{aligned}$, \strut, \strut}。依此类推。

在此处输入图片描述

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{amsmath}

\begin{document}


\begin{tikzpicture}
\begin{axis}[
legend cell align=left,
legend style={legend pos=north west}
]
  % added colours to plots
  \addplot[blue,domain=0:2] {x^2};
  \addplot[red,domain=0:4] {x};
  \legend{
    $\begin{aligned}[t]
    yy&=x^2\\[-2pt]
    y&=x
    \end{aligned}$,
    \strut % second legend entry
  }
\end{axis}
\end{tikzpicture}
\end{document}

不同的方法

另一种完全不同的方法可能是手动进行对齐。在这里,我定义了一个宏\LHS(左侧),其中包含一个可选参数和一个强制参数。您可以使用可选参数设置方程式 LHS 的宽度(默认为 1.5em),强制参数保存 LHS 的文本/符号。它创建一个固定宽度的框,使对齐=,用法如下:\legend{$\LHS{yy}=x^2$,$\LHS{y}=x$}

在此处输入图片描述

\documentclass{standalone}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usepackage{mathtools}
\newcommand{\LHS}[2][1.5em]{\hspace{#1}\mathllap{#2}}

\begin{document}


\begin{tikzpicture}
\begin{axis}[
legend cell align=left,
legend style={legend pos=north west}
]
  % added colours to plots
  \addplot[blue,domain=0:2] {x^2};
  \addplot[red,domain=0:4] {x};
  \legend{
    $\LHS{yy}=x^2$,
    $\LHS{y}=x$
  }
\end{axis}
\end{tikzpicture}
\end{document}

答案2

代替

\legend{
\begin{align*}
$yy&=x^2$\\
$y&=x$
\end{align*}
}

\legend{
$\begin{aligned}
yy&=x^2\\
y&=x
\end{aligned}$
}

相关内容