
Estou curioso para saber se é possível usar uma imagem customizada (por exemplo, plot) em vez de texto dentro da legenda de um gráfico gerado com pgfplots. Especificamente, dado 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 produz o gráfico abaixo
Gostaria de inserir a função de densidade real de uma distribuição uniforme no texto da legenda, por exemplo, quero ver isso (reduzido)
em vez do texto "Uniform(0, 1)". Claro, semelhante para a parte Exponencial(1).
O gráfico Uniform PDF também é gerado com pgfplots (MWC abaixo), então a questão, talvez, seja se é possível incorporar um pgfplot dentro de uma entrada de legenda.
\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}
Edição posterior
A solução proposta por Torbjorn funciona; faz o que eu quero:
Vou deixar a questão em aberto para ver se existe outra possibilidade de gerar tudo na hora, sem incorporar arquivos previamente compilados.
Responder1
(Esta é uma revisão completamente reescrita da minha resposta inicial)
Para modificar a descrição de uma entrada de legenda, pode-se usar \addlegendentry
, legend entries
, ou \legend
. Conseqüentemente, a resposta do @Torbjorns é o caminho a seguir.
No entanto, você pode inserir pequenas imagens no texto da legenda; não há restrição ao texto. Para este fim, você pode simplesmente escrever \tikz ... ;
em vez de, digamos, "Uniforme".
Aqui está uma abordagem baseada na resposta do @Torbjorns e nas minhas tentativas de montar uma imagem mais ou menos adequada:
\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}
Responder2
Não é uma resposta direta, mas pelo menos uma solução alternativa: você pode usar \includegraphics
em uma entrada de legenda, para poder primeiro compilar o código gerando a distribuição uniforme e depois usar
\addlegendentry{\includegraphics[width=1cm]{FilenameOfPDFwithUniformDist}};
para adicionar a imagem na legenda.