我很好奇,在使用 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}
生成下面的图表
我想在图例文本中插入均匀分布的实际密度函数,例如我想看到这个(缩小)
而不是“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
(这是我最初答案的完全重写修订版)
为了修改图例条目的描述,可以使用\addlegendentry
、legend 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}};
在图例中添加图像。