我正在尝试在 pgfplots 中生成一个 2 列乘以 2/3 行的组图。第一列有 2 个图,第二列有 3 个图。我想将图较少的一侧的图高度分布为相同的外部边界框。
对第一列和第二列图使用两种不同的高度,至少在某种程度上,我可以使它们的总高度合适。但是,垂直方向上,第一行与两个第一行图(a 和 b)的中心对齐。我想要实现的是,第一行的边界框顶部垂直对齐,最后一个图的边界框底线对齐。
我发现anchor=north
这里,但它只会改变右侧图的位置 (b),然后与左侧垂直中心对齐(图 a)。即使我为两个图都添加了选项。
我的代码看起来有点像:
\documentclass{standalone}
% pictures drawn with TikZ
\usepackage{tikz,pgfplots}
\usetikzlibrary{pgfplots.groupplots} % needs to be loaded exactly like this
\pgfplotsset{compat=newest}
\begin{document}
\newcommand{\heightLarge}{4.7cm}
\begin{tikzpicture}
\begin{groupplot}
[
group style={group size=2 by 3, % cols by rows
horizontal sep=50pt,
},
width= 0.385\textwidth,
height=3.2cm,
xmin=0,
xmax=14,
xlabel={time in s},
]
\nextgroupplot[% #1
ymin=0.0,
ymax=2/2,
ylabel={a},
height=\heightLarge,
]
\addplot[]{sin(x)};
\nextgroupplot[% #2
ymin=0,
ymax=0.2/0.03,
ylabel={b},
]
\addplot[]{sin(x)};
\nextgroupplot[% #3
ymin=-0.8,
ymax=0.8,
height=\heightLarge,
]
\addplot[]{sin(x)};
\nextgroupplot[% #4
ymin=2.5/3,
ymax=4.2/3,
]
\addplot[]{sin(x)};
\nextgroupplot[group/empty plot] % #5
\nextgroupplot[% #6
ymin=0,
ymax=60,
]
\addplot[]{sin(x)};
\end{groupplot}
\end{tikzpicture}%
\end{document}
答案1
我不认为它groupplot
可以用于制作这样的布局。幸运的是,手动完成并不太难。
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{
xmin=0, xmax=14,
xlabel={time in s}, xlabel style={yshift=4pt},
}
\begin{axis}[
name=plot1,
width=5cm, height=5cm,
ymin=0, ymax=1,
]
\end{axis}
\begin{axis}[
name=plot2, at={($(plot1.south west)+(0,-1cm)$)}, anchor=north west,
width=5cm, height=5cm,
ymin=-1, ymax=1,
]
\end{axis}
\begin{axis}[
name=plot3, at={($(plot1.north east)+(1.5cm,0)$)}, anchor=north west,
width=5cm, height=3.5cm,
ymin=0, ymax=6,
]
\end{axis}
\begin{axis}[
name=plot4, at={($(plot1.north east)!0.5!(plot2.south east)+(1.5cm,0)$)}, anchor=west,
width=5cm, height=3.5cm,
ymin=0.5, ymax=1.4,
]
\end{axis}
\begin{axis}[
name=plot5, at={($(plot2.south east)+(1.5cm,0)$)}, anchor=south west,
width=5cm, height=3.5cm,
ymin=0, ymax=60,
]
\end{axis}
\end{tikzpicture}
\end{document}
编辑:包含七张图表的布局
\documentclass[tikz, border=1cm]{standalone}
\usetikzlibrary{calc}
\usepackage{pgfplots}
\pgfplotsset{compat=1.18}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{xmin=0, xmax=1, ymin=0, ymax=1, width=5cm, height=3cm}
\begin{axis}[name=plot1] \end{axis}
\begin{axis}[name=plot2, at={($(plot1.south west)+(0,-2cm)$)}, anchor=north west] \end{axis}
\begin{axis}[name=plot3, at={($(plot2.south west)+(0,-2cm)$)}, anchor=north west] \end{axis}
\begin{axis}[name=plot4, at={($(plot1.north east)+(1cm,0)$)}, anchor=north west] \end{axis}
\begin{axis}[name=plot7, at={($(plot3.south east)+(1cm,0)$)}, anchor=south west] \end{axis}
\begin{axis}[name=plot5, at={($(plot4)!1/3!(plot7)$)}, anchor=center] \end{axis}
\begin{axis}[name=plot6, at={($(plot4)!2/3!(plot7)$)}, anchor=center] \end{axis}
\end{tikzpicture}
\end{document}