TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

I am using the awesome pgfplots package to draw some plots. I usually use \addlegendentry and get a nice default legend box. There are some options for legend box placement and layout (e.g. number of columns).

For some plots I would like to add a title inside the legend box.

Could not find the something about this in the manual. Does anyone know what is the way to customize the legend box?

share|improve this question
up vote 17 down vote accepted

You could perhaps use the \addlegendimage command, as in this discussion from the pgfplots-features mailing list.

An example, with a small \hspace hack to place the title more centered in the legend box:

\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}

enter image description here

For variety, here's a couple of more manual approaches. In each case the legend and title are separate entities, and the frame drawn afterwards.

\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}
share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.