我对 的分组选项有疑问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 bottom
edge top
edge left
edge 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}