如何使用“groupplots”库仅获取两个“yticklabels”

如何使用“groupplots”库仅获取两个“yticklabels”

使用groupplots库生成了多个子图,我想自动检测每个子图中的数据范围,并yticklabels仅指定两个(yminymax)。由于不同子图中的数据范围不同,因此我必须以编程方式检测最小值和最大值。

答案1

我认为这可以回答这个问题。 pgfplots无论如何都需要找出数据的范围,因此数字可以在宏中使用\pgfplots@data@ymin\pgfplots@data@ymax只是不能在“公共”界面中使用。

借用杰克对带有 pgfplots 的 Tufte 类轴, 我们可以说

\makeatletter
\newcommand\pgfplotsdataymin\pgfplots@data@ymin
\newcommand\pgfplotsdataymax\pgfplots@data@ymax
\makeatother

然后添加

ytick={\pgfplotsdataymin,\pgfplotsdataymax}

groupplot选项。

在此处输入图片描述

\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=1.14}
\usepgfplotslibrary{groupplots}
\makeatletter
\newcommand\pgfplotsdataymin\pgfplots@data@ymin
\newcommand\pgfplotsdataymax\pgfplots@data@ymax
\makeatother
\begin{document}
\begin{tikzpicture}

\begin{groupplot}[
 group style={
   group size=1 by 3,
   x descriptions at=edge bottom},
 height=3cm,width=7cm,
 ytick={\pgfplotsdataymin,\pgfplotsdataymax}
]

\nextgroupplot
\addplot {rnd+1};

\nextgroupplot
\addplot {rnd*3+2};

\nextgroupplot
\addplot {rnd*6+7};

\end{groupplot}
\end{tikzpicture}
\end{document}

相关内容