当同时使用“units”库时,“pgfplots.groupplots”中的分组选项问题

当同时使用“units”库时,“pgfplots.groupplots”中的分组选项问题

我对 的分组选项有疑问pgfplots.groupplots。除了标签之外,我还units定义了标签。使用 选项时xlabels at=edge bottom,只有标签(而不是单元)会移动到组底部(与 相同ylabels)。

\pgfplotsset{
    use units,
    x unit=s, x unit prefix={}, % 5.3.1 p227
    y unit=\unitfrac{rad}{s}, y unit prefix={},
    xlabel=time,
    ylabel=frequency $\omega$,
}

\begin{groupplot}[
    group style={
     group name=my plots,
        group size=2 by 2,
        xlabels at=edge bottom,
        ylabels at=edge left,
    },

还有什么想法可以将该单元放到底部吗?

答案1

编辑:简单的解决方案:如果您只是需要让它工作而不想摆弄库代码,那么您可以使用\nextgroupplot [x unit={}]y unit={}或两者来关闭各个图的单位,具体取决于下一个图。

“正确”的解决方案: 这两个库似乎彼此不了解,所以您必须对代码进行一些调整groupplots。不幸的是,标签是在代码的主要部分中设置的,因此您不能只重新定义一些小宏。

在文件中,tikzlibrarypgfplots.groupplots.code.tex你必须替换以下两行

\pgfplots@glob@TMPa,/pgfplots/group/plot c\pgfplots@column r\pgfplots@row/.append style={/pgfplots/xlabel={}}}%

\pgfplots@glob@TMPa,/pgfplots/group/plot c\pgfplots@column r\pgfplots@row/.append style={/pgfplots/xlabel={}}%
\ifpgfplots@units@use
  \pgfplots@glob@TMPa,/pgfplots/group/plot c\pgfplots@column r\pgfplots@row/.append style={/pgfplots/x unit={}}
\fi}%

以及该行的两次出现

\pgfplots@glob@TMPa,/pgfplots/group/plot c\pgfplots@column r\pgfplots@row/.append style={/pgfplots/ylabel={}}}%

\pgfplots@glob@TMPa,/pgfplots/group/plot c\pgfplots@column r\pgfplots@row/.append style={/pgfplots/ylabel={}}%
\ifpgfplots@units@use
  \pgfplots@glob@TMPa,/pgfplots/group/plot c\pgfplots@column r\pgfplots@row/.append style={/pgfplots/y unit={}}
\fi}%

无论是否有库,以及、、和units的所有组合,这都可以工作。edge bottomedge topedge leftedge right

以下是修改后的库的行为示例:

\documentclass{minimal}
\usepackage{pgfplots}
\usepgfplotslibrary{groupplots,units}

\begin{document}
\begin{tikzpicture}

\pgfplotsset{
    use units,
    x unit=s, x unit prefix={}, % 5.3.1 p227
    y unit=m, y unit prefix=k,
    xlabel=time,
    ylabel=frequency $\omega$,
}

\begin{groupplot}[
    group style={
     group name=my plots,
        group size=2 by 2,
        xlabels at=edge bottom,
        ylabels at=edge left
    },height=4cm, width=4cm]
\nextgroupplot
\addplot coordinates {(0,0) (1,1) (2,2)};
\nextgroupplot
\addplot coordinates {(0,2) (1,1) (2,0)};
\nextgroupplot
\addplot coordinates {(0,2) (1,1) (2,1)};
\nextgroupplot
\addplot coordinates {(0,2) (1,1) (1,0)};
\end{groupplot}

\end{tikzpicture}
\end{document}

带有单位和修补的 groupplots 库的 pgfplots

相关内容