pgfplots-将 y 轴分为两部分

pgfplots-将 y 轴分为两部分

我有一个情节,代码这里。现在我遇到的问题是,由于 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}

相关内容