这可以被认为是以下问题的组合
下面的代码片段渲染了两个图,一个在另一个之上,并为两个图附加一个通用的 ylabel。
\documentclass[tikz]{standalone}
\usepackage[T1]{fontenc}
\usepackage{cmbright}
%% Just some font that has serifs for maths
%% Yes; this particular combination is horrible
\usepackage{euler}
\usepackage{pgfplots}
\usepgfplotslibrary{units}
\pgfplotsset{compat=newest}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={group size=1 by 2}]
\nextgroupplot[ylabel = ylabel, y unit = m/s]
\addplot coordinates {(0,0) (1,1) (2,2)};
\nextgroupplot
\addplot coordinates {(0,2) (1,1000) (2,0)};
\end{groupplot}
\node at ($(group c1r1.west)!0.5!(group c1r2.west)$)
[xshift=-1.5cm] % Problem #1: estimated distance
{\rotatebox{90}{ylabel [$\mathrm{m/s}$]}};
% Problem #2: Copying pgfplots internals,
% i.e. /pgfplots/unit code/.code 2 args={\mathrm{#1#2}}
\end{tikzpicture}
\end{document}
有两个问题:如果这种near ticks
机制也适用于这种情况,那就太好了,也就是说,可以自动确定与两个图的最佳距离;最重要的是,如果使用单位,ylabel 就不再只是一小段文本,而是更复杂的东西;我宁愿不重新发明这种机制。
有没有更好的方法来处理这个问题?
答案1
您可能会发现以下方法很有帮助。在这里,我只需将标签添加到第二个图(标签最宽的图)并将其放置在10%
上方相对于第二个图的轴的位置。这样做的优点是 (a) 使用标准标签样式和 (b) 定位会随着不同图大小而以合理的方式变化。主要选择是将其附加到哪个图,选择基于标签最宽的图。
\documentclass{article}
\usepackage{pgfplots}
\usepgfplotslibrary{units,groupplots}
\pgfplotsset{compat=newest}
\begin{document}
\begin{tikzpicture}
\begin{groupplot}[group style={group size=1 by 2}]
\nextgroupplot
\addplot coordinates {(0,0) (1,1) (2,2)};
\nextgroupplot[ylabel=ylabel,y unit=m/s,
every axis y label/.append style={at=(ticklabel cs:1.1)}]
\addplot coordinates {(0,2) (1,1000) (2,0)};
\end{groupplot}
\end{tikzpicture}
\end{document}