在 pgfplot 图例中使用 plot 而不是文本

在 pgfplot 图例中使用 plot 而不是文本

我很好奇,在使用 pgfplots 生成的图表的图例中,是否可以用自定义图像(例如 plot)代替文本。具体来说,考虑到这个 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}

生成下面的图表

http://i.imgur.com/T2zVNe5.png

我想在图例文本中插入均匀分布的实际密度函数,例如我想看到这个(缩小)

均匀分布的 PDF

而不是“Uniform(0, 1)”文本。当然,Exponential(1) 部分也类似。

统一 PDF 图也是用 pgfplots(下面的 MWC)生成的,所以问题可能是是否可以将 pgfplot 嵌入图例条目中。

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

后期编辑

Torbjorn 提出的解决方案有效;它实现了我想要的:

图例中有两幅图像

我将提出这个问题,看看是否还有其他可能性可以动态生成所有内容,而无需嵌入以前编译的文件。

答案1

(这是我最初答案的完全重写修订版)

为了修改图例条目的描述,可以使用\addlegendentrylegend entries\legend。因此,@Torbjorns 的答案是正确的。

但是,您可以自由地在图例文本中插入小图片;对文本没有任何限制。为此,您可以简单地写\tikz ... ;上“统一”来代替。

以下是基于@Torbjorns 回答的方法以及我尝试组装或多或少合适的图像:

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

在此处输入图片描述

答案2

虽然不是直接的答案,但至少是一种解决方法:您可以\includegraphics在图例条目中使用,因此您可以先编译生成均匀分布的代码,然后使用

\addlegendentry{\includegraphics[width=1cm]{FilenameOfPDFwithUniformDist}};

在图例中添加图像。

相关内容