当两个图形中的一个在 y 轴上有不连续点时,将两个图形并排放置

当两个图形中的一个在 y 轴上有不连续点时,将两个图形并排放置

我正在尝试使用 创建一个双图图pgfplots。但是,结果并不完全符合我的要求,因为我期望两个图并排出现,但它们却奇怪地对齐了。在pgfplot手册(第 21 页)中,您可以阅读

在此处输入图片描述 因此,我不知道我做错了什么。

在此处输入图片描述

我的代码是

\documentclass{article}
\usepackage{pgfplots}

\usepgfplotslibrary{fillbetween}

\pgfplotsset{compat = newest}


\begin{document}

\begin{figure}
   \begin{tikzpicture}
      \begin{axis}[
         ticks=none, 
         axis x line=bottom,
         axis y line=left,
         xmin=0,xmax=7,
         ymin=0,ymax=12]
      \addplot[
         domain = 0:7,
         samples =200,
         ] {x};
      \end{axis}
   \end{tikzpicture}
   \begin{tikzpicture}
      \begin{axis}[
         ticks=none, 
         axis x line=bottom,
         axis y line=left,
         axis y discontinuity=crunch,
         xmin=0,xmax=1.3,
         ymin=0.5,ymax=1.3]
      \addplot[
         domain = 0:sqrt(1/3),
         samples =200,
         ] {sqrt(7/6-x^2)};
      \addplot[
         domain = sqrt(1/3):sqrt(7/6),
         fill = gray,
         fill opacity = 0.1,
         samples =200,
         y filter/.expression={x==sqrt(7/6 )?0:y},
         ] {sqrt(7/6-x^2)}\closedcycle;
      \addplot[
         domain = 0:7,
         samples =200,
         ] {sqrt(5/6)};
      \fill[gray, opacity = 0.1] (0,0) -- (0,0.9129) -- (0.5774,0.9129) -- (0.5774,0);
      \end{axis}
   \end{tikzpicture}
\end{figure}

\end{document}

编辑:crunch这也许是最右侧图表中轴的结果吗?我认为是的:删除axis y discontinuity=crunch会导致两个图表对齐。

在此处输入图片描述

相加\usepackage{showframe}显示,即使两个图正确对齐,生成的图也比边距宽。但是,当存在时,crunch即使缩小各个图的尺寸以使其适合页面宽度,错位仍然存在。

在此处输入图片描述

答案1

  • 社区评论:通常情况下,本网站的习惯是“每个问题问一个问题”:)。
  • 实际答案:下面,您可以找到针对您的第一个问题的建议(并排),使用\usepgfplotslibrary{groupplots}
  • PGFPLOTS 手册参考:我还添加了手册中相关部分的屏幕截图。

在此处输入图片描述

\documentclass{article}

\usepackage{pgfplots}
\usepgfplotslibrary{fillbetween}
\usepgfplotslibrary{groupplots}
\pgfplotsset{compat = 1.18}

\begin{document}

\begin{tikzpicture}
\begin{groupplot}[
    % Shared options for all diagrams.
    group style = {
            group size = 2 by 1
        },
        height = 40mm,
        width = 30mm,
        ]
\nextgroupplot[
         ticks=none, 
         axis x line=bottom,
         axis y line=left,
         xmin = 0,
         xmax = 7,
         ymin = 0,
         ymax = 12,
         ]
\addplot[
         domain = 0:7,
         samples =200,
         ] {x};
\nextgroupplot[
         ticks = none, 
         axis x line = bottom,
         axis y line = left,
         axis y discontinuity = crunch,
         xmin = 0,
         xmax = 1.3,
         ymin = 0.5,
         ymax = 1.3,
         ]
\addplot[
         domain = 0:sqrt(1/3),
         samples = 200,
         ] {sqrt(7/6-x^2)};
\end{groupplot}
\end{tikzpicture}

\end{document}

在此处输入图片描述


评论: \usepackage{showframe}表明您的图表太宽。

在此处输入图片描述

相关内容