在普通的 tikzpicture 中使用 pgfplots 样式的图例

在普通的 tikzpicture 中使用 pgfplots 样式的图例

我使用普通的旧版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}

带有传奇色彩的情节

相关内容