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}
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}
Try
\begin{axis}[ legend style={draw=none}]
That looks like it might be asking for no legend to be drawn at all but actually it just applies to the rectangle around the legend.
Best Answer
You can add
fill=none
to thelegend style
key as in this approach.