
Tengo curiosidad por saber si es posible utilizar una imagen personalizada (por ejemplo, un gráfico) en lugar de texto dentro de la leyenda de un gráfico generado con pgfplots. En concreto, ante este MWC:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\tikzset{every mark/.append style={scale=0.75}}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$, ymin=0, xmin=-1.1, xmax=1.1, samples=300, ylabel=$f(x)$,
smooth,
legend style={ legend cell align=left, at={(1.03, 1)}, anchor=north west}
]
\addplot coordinates {
(-1, 0)
(0, 0.5)
(1, 1)
};
\addlegendentry{Uniform(0,1)};
\addplot coordinates {
(-1, 1)
(0, 0.2)
(1, 0)
};
\addlegendentry{Exponential(1)};
\end{axis}
\end{tikzpicture}
\end{document}
que produce el siguiente cuadro
Me gustaría insertar la función de densidad real de una distribución uniforme en el texto de la leyenda, por ejemplo, quiero ver esto (reducido)
en lugar del texto "Uniforme(0, 1)". Por supuesto, similar para la parte Exponencial(1).
El gráfico uniforme de PDF también se genera con pgfplots (MWC a continuación), por lo que la pregunta, tal vez, es si es posible incrustar un pgfplot dentro de una entrada de leyenda.
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\tikzset{every mark/.append style={scale=0.75}}
\begin{tikzpicture}
\begin{axis}[ymin=0, xmin=0, xmax=1, ymax=2,xticklabels=none, yticklabels=none]
\addplot[color=black, fill=black] (x,1) \closedcycle;
\end{axis}
\end{tikzpicture}
\end{document}
Editar más tarde
La solución propuesta por Torbjorn funciona; hace lo que quiero:
Dejaré abierta la pregunta para ver si existe otra posibilidad de generar todo sobre la marcha, sin incrustar archivos previamente compilados.
Respuesta1
(Esta es una revisión completamente reescrita de mi respuesta inicial)
Para modificar la descripción de una entrada de leyenda, se puede utilizar \addlegendentry
, legend entries
o \legend
. En consecuencia, la respuesta de @Torbjorns es el camino a seguir.
Sin embargo, eres libre de insertar imágenes pequeñas en el texto de la leyenda; no hay restricción de texto. Para ello, simplemente puede escribir \tikz ... ;
en lugar de, por ejemplo, "Uniforme".
Aquí hay un enfoque basado en la respuesta de @Torbjorns y mis intentos de armar una imagen más o menos adecuada:
\documentclass{standalone}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\begin{document}
\tikzset{every mark/.append style={scale=0.75}}
\begin{tikzpicture}
\begin{axis}[xlabel=$x$, ymin=0, xmin=-1.1, xmax=1.1, samples=300, ylabel=$f(x)$,
smooth,
legend style={ legend cell align=left, at={(1.03, 1)}, anchor=north west}
]
\addplot coordinates {
(-1, 0)
(0, 0.5)
(1, 1)
};
\addlegendentry{
\begin{tikzpicture}
\fill[draw] (0cm,0cm) rectangle (0.6cm,-0.15cm);
\draw (0cm,0cm) rectangle (0.6cm,+0.15cm);
\end{tikzpicture}
}
\addplot coordinates {
(-1, 1)
(0, 0.2)
(1, 0)
};
\addlegendentry{
\tikz\draw[mark=none,samples=11,domain=-2.5:2.5,xshift=1em,yshift=-0.05cm,xscale=0.015,yscale=0.03] plot (\x,{exp(-(\x)^2)});
}
\end{axis}
\end{tikzpicture}
\end{document}
Respuesta2
No es una respuesta directa, pero al menos es una solución alternativa: puede usarlo \includegraphics
en una entrada de leyenda, por lo que primero podría compilar el código que genera la distribución uniforme y luego usar
\addlegendentry{\includegraphics[width=1cm]{FilenameOfPDFwithUniformDist}};
para agregar la imagen en la leyenda.