在 pgfplots 中自动对齐 104 个子图

在 pgfplots 中自动对齐 104 个子图

使用Matlab2tikz我生成了一个包含 104 个以非常特定方式排列的子图的文件。然后我插入\pgfplotsset{yticklabel style={text width=2em,align=right},}、编译并获得了最终的 PDF,效果很好,只是子图的排列仍然不令人满意:

在此处输入图片描述

我正在尝试更好地组织子图,以便:

  1. 会有相同的垂直间距,
  2. ylabels每个子图仅限两个

是否有可能做到这一点,而不必修改每一个addplot

更新: 使用斯蒂芬·平诺,我注意到顺序仍然错误。这是因为生成的 *.tikz 文件从底行的第二个子图(从左边开始)开始,并相对于它定位在后面的子图上。这当然使得使用groupplot完全错误。因此,我认为我有义务坚持axis环境中,并发挥其作用yticklabels以提高间距。

知道如何自动修复yticklabels每个子图的三个吗?

答案1

  1. 我认为实现这一点的最简单(一致)的方法是使用groupplots库(看看PGFPlots 手册第 5.8 节第 428 页(v1.13 版)
  2. 由于你没有具体说明什么您需要“两个 ylabel”,我建议使用 和 键max space between tickstry min ticks其他感兴趣的键可以是ytick(与 组合ytick distance) 或yticklabels from table。所有这些键都可以作为可选参数\nextgroupplot直接提供给命令,或者 - 如果它们本身需要重复 - 作为您可以在序言中定义的样式。

请找到groupplot以下环境的一个非常简单的示例。

\documentclass[border=2mm]{standalone}
\usepackage{pgfplots}
    \usepgfplotslibrary{groupplots}
\begin{document}
    \begin{tikzpicture}
        \begin{groupplot}[
            tiny,
            /tikz/mark size=1.5pt,
            group style={
                group name=my plots,
                group size=2 by 2,
                horizontal sep=4mm,      % <-- default: 1cm
                vertical sep=2mm,        % <-- default: 1cm
                xticklabels at=edge bottom,
            },
            width=3cm,
            height=3cm,
        ]
        \nextgroupplot[group/empty plot]
        \nextgroupplot
            \addplot coordinates{(0,0) (1,2) (2,1)};
        \nextgroupplot
            \addplot coordinates{(0,0) (1,2) (2,1)};
        \nextgroupplot
            \addplot coordinates{(0,0) (1,2) (2,1)};
        \end{groupplot}
    \end{tikzpicture}
\end{document}

该图显示了上述代码的结果

相关内容