使用groupplots
库生成了多个子图,我想自动检测每个子图中的数据范围,并yticklabels
仅指定两个(ymin
和ymax
)。由于不同子图中的数据范围不同,因此我必须以编程方式检测最小值和最大值。
答案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}