我在用很棒的pgfplots
包裹绘制一些图表。我通常使用\addlegendentry
并得到一个不错的默认图例框。图例框的放置和布局有一些选项(例如列数)。
对于某些情节,我想在图例框内添加标题。
无法找到有关此内容手册。有谁知道自定义图例框的方法是什么吗?
答案1
您也许可以使用该\addlegendimage
命令,例如来自 pgfplots-features 邮件列表的此讨论。
举个例子,通过一个小\hspace
技巧,将标题放置在图例框的更中央位置:
\documentclass{standalone}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[legend pos=south east]
\addlegendimage{empty legend}
\addplot {sqrt(x)};
\addplot {ln(x)};
\addlegendentry{\hspace{-.6cm}\textbf{A title}}
\addlegendentry{$\sqrt{x}$}
\addlegendentry{$\ln{x}$}
\end{axis}
\end{tikzpicture}
\end{document}
为了多样化,这里还有几种手动方法。在每种情况下,图例和标题都是单独的实体,然后绘制框架。
\documentclass[border=5mm,tikz]{standalone}
\usepackage{pgfplots}
\usetikzlibrary{fit}
\begin{document}
\begin{tikzpicture}
\begin{axis}[legend style={at={(rel axis cs:0.9,0.1)},above left,name=legend,draw=none}]
\addplot {sqrt(x)};
\addplot {ln(x)};
\addlegendentry{$\sqrt{x}$}
\addlegendentry{$\ln{x}$}
\end{axis}
\node [above,font=\bfseries] (legendtitle) at (legend.north) {Legend title};
\node [fit=(legendtitle)(legend),draw,inner sep=0pt] {};
\end{tikzpicture}
\begin{tikzpicture}
\begin{axis}[legend style={draw=none,legend to name=leg}]
\addplot {sqrt(x)};
\addplot {ln(x)};
\addlegendentry{$\sqrt{x}$}
\addlegendentry{$\ln{x}$}
% place legend
\node [above left] (L) at (rel axis cs:0.9,0.1) {\ref{leg}};
% Add title
\node [above,font=\bfseries] (LT) at (L.north) {Legend title};
% if needed, add frame
\node [fit=(L)(LT),draw,inner sep=0pt] {};
\end{axis}
\end{tikzpicture}
\end{document}