自动标记组图(A)、(B)、(C),

自动标记组图(A)、(B)、(C),

有没有办法自动标记一组groupplots来自pgfplots包(A),(B),(C),......?

\documentclass[margin=2pt]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.8}

\begin{document}
\begin{tikzpicture}[shorten >=4pt,shorten <=4pt]
  \begin{groupplot}[group style={group size=2 by 2,vertical sep=15mm},
    height=3.5cm,width=3.5cm,/tikz/font=\small]
    \nextgroupplot[title=(A)]
    \addplot coordinates {(0,1) (1,0)};
    \nextgroupplot[title=(B)]
    \addplot coordinates {(0,1) (1,0)};
    \nextgroupplot[title=(C)] 
    \addplot coordinates {(0,1) (1,0)};
    \nextgroupplot[title=(D)] 
    \addplot coordinates {(0,1) (1,0)};
  \end{groupplot}
\end{tikzpicture}
\end{document}

在此处输入图片描述

答案1

groupplots库将当前图的值保存在计数中。因此,您可以使用包和以下样式\pgfplots@group@current@plot自动创建标题:alphalph

\makeatletter
\pgfplotsset{
    auto title/.style={
        title=(\AlphAlph{\pgfplots@group@current@plot})
    }
}
\makeatother

然后您只需添加auto titleaxis选项(或添加到\nextgroupplot选项),您就会得到所需的结果:

\documentclass[margin=2pt]{standalone}

\usepackage{alphalph}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.8}

\makeatletter
\pgfplotsset{
    auto title/.style={
        title=(\AlphAlph{\pgfplots@group@current@plot})
    }
}
\makeatother

\begin{document}
\begin{tikzpicture}[shorten >=4pt,shorten <=4pt]
  \begin{groupplot}[group style={group size=2 by 2,vertical sep=15mm},
    height=3.5cm,width=3.5cm,/tikz/font=\small, auto title]
    \nextgroupplot
    \addplot coordinates {(0,1) (1,0)};
    \nextgroupplot
    \addplot coordinates {(0,1) (1,0)};
    \nextgroupplot
    \addplot coordinates {(0,1) (1,0)};
    \nextgroupplot
    \addplot coordinates {(0,1) (1,0)};
  \end{groupplot}
\end{tikzpicture}
\end{document}

答案2

虽然这给出了所需的结果,但还有一些问题我还没有完全解决。正如我希望它能工作一样,你会将它用于\startaddplot你的第一个绘图和\nextaddplot后续绘图。

但实际情况是,我使用的计数器不知何故步步落后。因此,我不得不采取粗暴的修复措施,将计数器初始化为 -1,而不是预期值 0,并且还要求您\noaddplot在完成后发出一个,以追溯步进计数器以绘制最终图。

我确信像 egreg 这样的人会告诉我为什么我的计数器没有跟上。

\documentclass[margin=2pt]{standalone}

\usepackage{pgfplots}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat=1.8}
\newcounter{plotno}
\newcommand\startaddplot{%
  \global\setcounter{plotno}{-1}%
  \nextaddplot%
}
\newcommand\nextaddplot{
  \global\stepcounter{plotno}%
  \nextgroupplot[title=(\Alph{plotno})]%
  \addplot%
}
\def\noaddplot{\global\stepcounter{plotno}}
\begin{document}
\begin{tikzpicture}[shorten >=4pt,shorten <=4pt]
  \begin{groupplot}[group style={group size=2 by 2,vertical sep=15mm},
    height=3.5cm,width=3.5cm,/tikz/font=\small]
    \startaddplot coordinates {(0,1) (1,0)};
    \nextaddplot coordinates {(0,1) (1,0)};
    \nextaddplot coordinates {(0,1) (1,0)};
    \nextaddplot coordinates {(0,1) (1,0)};
    \noaddplot
  \end{groupplot}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容