我想使用 pgfplots 的“图例到名称”功能来引用相应图形环境标题中的(命名)图例。此外,如果能够将图例与文本内联,那就太好了。
一般来说,它是有效的,但是垂直对齐在两种情况下都处于关闭状态。
我看了(还有其他的) tikzpicture 与文本的垂直对齐和 TikZ 圆圈文本的垂直对齐但这些答案并没有真正解决问题。
这是未对齐的 MWE:
\documentclass{article}
\usepackage{lipsum}
\usepackage{pgfplots}
\pgfplotsset{
width=7cm,
compat=1.18,
footnotesize,
samples=10,
every legend to name picture/.style={
% baseline={([yshift=+0.55em]current bounding box.south)}
% baseline={[yshift=+1.65em](current bounding box.base)}
},
}
\begin{document}
\lipsum[1-2]\ref{named}
\lipsum[3]
\begin{figure}[b]
%
\begin{tikzpicture}
\begin{axis}[
legend columns=-1,
legend entries={$(x+0)^k$;,$(x+1)^k$},
legend to name=named,
every axis legend/.append style={
draw=none,
},
]
\addplot {x};
\addplot {x+1};
\end{axis}
\end{tikzpicture}
%
\caption{Test: \ref{named}}
\end{figure}
\end{document}
我尝试了一些设置,包括使用基线注释掉的设置。但手动设置“正确的” yshift 似乎有点“不合时宜”。
我希望有人能在这里帮助我。
答案1
我发现你可以用 (或任何你喜欢的名字)来命名图例legend style={name=leg}
,这样你就可以使用 将其内联表示与其自己的基线对齐every legend to name picture/.style={baseline={(leg.base)}}
。你还可以使用 将图例内的节点(位于矩阵中)与其基线对齐legend style={nodes={anchor=base}}
。因此,诀窍是将所有内容与同一基线对齐。这将导致类似以下内容:
现在,下一步是取消图例图片的对齐或将它们稍微向上移动。legend image post style={yshift=.5ex}
例如,可以使用以下方法完成。此方法的完整代码如下:
\documentclass{article}
\usepackage{lipsum}
\usepackage{pgfplots}
\pgfplotsset{
width=7cm,
compat=1.18,
footnotesize,
samples=10,
legend style={
nodes={anchor=base},
name=leg,
},
legend image post style={yshift=.5ex},
every legend to name picture/.style={
baseline={(leg.base)},
},
}
\begin{document}
\lipsum[1-2]\ref{named}
\lipsum[3]
\begin{figure}[b]
%
\begin{tikzpicture}
\begin{axis}[
legend columns=-1,
legend entries={$(x+0)^k$;,$(x+1)^k$},
legend to name=named,
every axis legend/.append style={
draw=none,
},
]
\addplot {x};
\addplot {x+1};
\end{axis}
\end{tikzpicture}
%
\caption{Test: \ref{named}}
\end{figure}
\end{document}