我有一个情节,代码这里。现在我遇到的问题是,由于 y 轴的比例,这些图看起来实际上只有 3 条线。现在我想要的是 y 轴被分割开来。分成从 -0.2 到 0.2 的部分和从 -1.5 到 -1.3 的部分……
所以 y 轴看起来应该是这样的
0.2 -|
|
|
-0.2 -|
|
-1.3 -|
|
|
-1.5 -|
----------------------------
这可能吗?
-- 好的,我知道可以使用 groupplot 来解决这个问题。但是我给出的图,我已经打算在 groupplot 环境中与其他 2 个图一起使用了。所以我也可以将建议的方法与组合在 groupplot 中的其他正常图结合使用吗?
我当前的设置,现在我需要第三个组图的分割
\begin{tikzpicture}
\pgfplotsset{%
width=4cm,
height=4cm,
scale only axis,
every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
xmajorgrids,
xminorgrids,
every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
ymajorgrids,
yminorgrids
}
\begin{groupplot}[%
group style={
group size=3 by 1,
horizontal sep=50pt,
vertical sep=40pt
}
]
\nextgroupplot[
xmin=0,
xmax=800,
xlabel={Time [\si{\second}]},
ymin=-0.000196069528802578,
ymax=0.000140838393117182,
ylabel={State error $\mathbf{x} - \mathbf{x}'$},
]
\addplot [
color=red,
solid,
forget plot
]
table[row sep=crcr]{
};
\addplot [
color=green,
solid,
forget plot
]
table[row sep=crcr]{
};
\addplot [
color=blue,
solid,
forget plot
]
table[row sep=crcr]{
};
\nextgroupplot[
xmin=0,
xmax=800,
xlabel={Time [\si{\second}]},
ymin=-3.50920459213846,
ymax=2.98111910953132,
ylabel={$||\delta(t)||/{\delta_0}$}
]
\addplot [
color=blue,
solid,
forget plot
]
table[row sep=crcr]{
};
\nextgroupplot[
xmin=0.5,
xmax=800,
xlabel={Time [\si{\second}]},
ymin=-1.35665432608546,
ymax=0.168623669468375,
ylabel={Lyapunov exponents},
]
\addplot [
color=blue,
solid,
forget plot
]
};
\addplot [
color=green!50!black,
solid,
forget plot
]
table[row sep=crcr]{
};
\addplot [
color=red,
solid,
forget plot
]
table[row sep=crcr]{
};
\end{groupplot}
\end{tikzpicture}%
还请注意,我需要一个通用的 y 标签,因此这个解决方案应该能够起作用......创建与多个图重叠的 x 和 y 标签
答案1
这里有个建议。我groupplot
对第三个轴使用第二个环境,并将其相对于第二个轴放置。对于ylabel
我只是将shift
它向下移动一点。对于第三个轴,请注意height
为每个轴明确设置groupplots
,以便它们的组合高度与其他轴相同(4cm)。
\documentclass[border=5mm,tikz]{standalone}
\usepackage{pgfplots,siunitx}
\usepgfplotslibrary{groupplots}
\begin{document}
\begin{tikzpicture}
\pgfplotsset{%
width=4cm,
height=4cm,
scale only axis,
every x tick label/.append style={font=\scriptsize\color{gray!80!black}},
xmajorgrids,
xminorgrids,
every y tick label/.append style={font=\scriptsize\color{gray!80!black}},
ymajorgrids,
yminorgrids
}
\begin{groupplot}[%
group style={
group name=first,
group size=2 by 1,
horizontal sep=50pt,
vertical sep=40pt
}
]
\nextgroupplot[
xmin=0,
xmax=800,
xlabel={Time [\si{\second}]},
ymin=-0.000196069528802578,
ymax=0.000140838393117182,
ylabel={State error $\mathbf{x} - \mathbf{x}'$},
]
\nextgroupplot[
xmin=0,
xmax=800,
xlabel={Time [\si{\second}]},
ymin=-3.50920459213846,
ymax=2.98111910953132,
ylabel={$||\delta(t)||/{\delta_0}$}
]
\end{groupplot}
\begin{groupplot}[
group style={
group name=second,
group size=1 by 2,
vertical sep=0pt,
x descriptions at=edge bottom},
xmin=0.5,xmax=800,
anchor=north west]
\nextgroupplot[at={($(first c2r1.outer north east)+(40pt,0)$)},
ylabel={Lyapunov exponents},
ylabel style={shift={(-1cm,0)}},
ymin=-0.3,ymax=0.2,
axis x line=top,
axis y discontinuity=parallel,
height=2cm]
\nextgroupplot[ymin=-1.5,ymax=-1.28,xlabel={Time [\si{\second}]},
axis x line=bottom,
height=2cm]
\end{groupplot}
\end{tikzpicture}%
\end{document}