如何在等号处对齐图例方程式,知道此代码显示以下错误
缺少} 插入。\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}$
}