我使用普通的旧版tikzpicture
来制作类似饼图的图表。现在,我论文中的所有其他图表都使用pgfplots
(不制作饼图)处理,并使用 排版其图例pgfplots
。
因此,如果能够重复使用尽可能多的键/pgfplots/area legend
,在 TiKZ 中创建 pgfplots 样式的图例,那就太好了。以前有人做过类似的事情吗?
答案1
Pgfplots 有几个辅助方法可以完成这项工作 - 这些方法大多独立于任何轴。唯一需要的是文本标签和各个图像的样式。
以下是一个简短的草稿,也许可以满足您的要求:
\documentclass{article}
\usepackage{pgfplots}
% argument #1: any options
\newenvironment{customlegend}[1][]{%
\begingroup
% inits/clears the lists (which might be populated from previous
% axes):
\csname pgfplots@init@cleared@structures\endcsname
\pgfplotsset{#1}%
}{%
% draws the legend:
\csname pgfplots@createlegend\endcsname
\endgroup
}%
% makes \addlegendimage available (typically only available within an
% axis environment):
\def\addlegendimage{\csname pgfplots@addlegendimage\endcsname}
\begin{document}
\thispagestyle{empty}
\begin{tikzpicture}
\begin{customlegend}[legend entries={$a$,$e^x$,C,$d$}]
\addlegendimage{red,fill=black!50!red,area legend}
\addlegendimage{red,fill=black!50!red,sharp plot}
\addlegendimage{red,fill=black!50!red,mark=*,sharp plot}
\addlegendimage{red,fill=black!50!red,ybar,ybar legend}
\end{customlegend}
\end{tikzpicture}
\end{document}
不同的\addlegendimage
风格有点……不一致,但我想尝试一下它们是否有效。我想这mesh legend
可能会产生问题,所以坚持使用更简单的风格……
答案2
以下是如何将非 pgfplots 样式的图例放入 pgfplots 中。
\documentclass{article}
\usepackage{pgfplots}
\begin{document}
\begin{tikzpicture}
\begin{axis}[xmin=0,xmax=10,ymin=-5,ymax=5,name=border]
\end{axis}
\node[draw=black,thick,rounded corners=2pt,below left=2mm] at (border.north east) {%
\begin{tabular}{@{}r@{ }l@{}}
\raisebox{2pt}{\tikz{\draw[black] (0,0) -- (5mm,0);}}&black\\
\raisebox{2pt}{\tikz{\draw[red] (0,0) -- (5mm,0);}}&red\\
\raisebox{2pt}{\tikz{\draw[green] (0,0) -- (5mm,0);}}&green\\
\raisebox{2pt}{\tikz{\draw[blue] (0,0) -- (5mm,0);}}&blue
\end{tabular}};
\end{tikzpicture}
\end{document}