并排合并 2 张 tikzpicture

并排合并 2 张 tikzpicture

如何才能“合并”两张 tikzpicture 并排?我尝试了相关文章中提供的几种解决方案,\subfigure但它总是在图形之间产生一点空白。

这是我的代码:

\documentclass{article}

\usepackage{pgfplots}
\pgfplotsset{compat=newest}


\usepackage{pgf, tikz, adjustbox}
\usepgfplotslibrary{fillbetween}
\usetikzlibrary{patterns, matrix, positioning}
\usetikzlibrary{arrows.meta,
                patterns.meta
                }

\begin{document}

\begin{figure}
\begin{tikzpicture}[
declare function={
gauss(\x)=3*exp(-(\x/3)^2);
}, scale = 0.6]
\fill[cyan!20] plot[domain=0:8, samples=100] (\x, {gauss(\x)}) |-(0,0);
\filldraw[fill=pink!20, very thick] plot[domain=0:8, samples=100] (\x, {gauss(\x)}) -- plot[domain=8:0, samples=100] (\x, {gauss(\x)+0.6}) -- cycle;
\end{tikzpicture}
\begin{tikzpicture}[
declare function={
gauss(\x)=3*exp(-(\x/3)^2);
}, scale = 0.6]
\fill[cyan!20] plot[domain=-8:0, samples=100] (\x, {gauss(\x)}) |-(0,0);
\filldraw[fill=pink!20, very thick] plot[domain=-8:0, samples=100] (\x, {gauss(\x)}) -- plot[domain=0:-8, samples=100] (\x, {gauss(\x)+0.6}) -- cycle;
\end{tikzpicture}
\end{figure}

\end{document}

我也尝试过\scope这篇文章中提到的工具: 在 TikZ 中合并图但我认为我做得不正确,因为我一直有一个空白处......

非常感谢,

在此处输入图片描述

答案1

两个tikzpicture并排

您需要通过添加来隐藏\end{tikzpicture}和之间的空间,否则该空间将位于图片之间。\begin{tikzpicture}%

由于 TikZ 在确定边界框时会考虑线宽,因此您将在那里看到一条看似双倍宽的线。我建议使用trim lefttrim right选项。

(我们不能(0:8)在那里使用但需要使用,(0:.6*8)因为它没有考虑到,scale这就是为什么我在图中使用命名坐标。)

转移第二部分

不过,您也可以通过tikzpicture将第二部分向右移动约 16 个单位来将两个部分合并绘制,即shift={(16,0)}shift=(0:16)

由于你的左侧从X= 0 到 8,右边从 −8 到 0,两者之间总共相差 16 个单位X= 0。

绘制在一起

如果您愿意,您也可以一次在一条路径上绘制它(它们之间没有垂直线)。

我们仍然使用shift=(0:16)键,以便绘图域正常工作,但这次仅针对路径的一部分,通过将包括转换在内的该部分括在{和中}

垂直线可以简单地通过以下方式添加

\draw[very thick] (0:8) -- ++ (up:.6);

代码

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[
  declare function={gauss(\x)=3*exp(-(\x/3)^2);}, scale = 0.6,
  trim right=(@tr)]
\fill[cyan!20]
  plot[domain=0:8, samples=100] (\x, {gauss(\x)}) coordinate (@tr) -| cycle;
\filldraw[fill=pink!20, very thick]
     plot[domain=0:8, samples=100] (\x, {gauss(\x)})
  -- plot[domain=8:0, samples=100] (\x, {gauss(\x)+0.6}) -- cycle;
\end{tikzpicture}% <- important
\begin{tikzpicture}[
  declare function={gauss(\x)=3*exp(-(\x/3)^2);}, scale = 0.6,
  trim left=(@tl)]
\fill[cyan!20]
  plot[domain=-8:0, samples=100] (\x, {gauss(\x)}) |- cycle
  coordinate[at start] (@tl);
\filldraw[fill=pink!20, very thick]
     plot[domain=-8:0, samples=100] (\x, {gauss(\x)})
  -- plot[domain=0:-8, samples=100] (\x, {gauss(\x)+0.6}) -- cycle;
\end{tikzpicture}

\begin{tikzpicture}[
  declare function={gauss(\x)=3*exp(-(\x/3)^2);},
  scale = 0.6]
\fill[cyan!20] plot[domain=0:8, samples=100]  (\x, {gauss(\x)}) -| cycle;
\filldraw[fill=pink!20, very thick]
               plot[domain=0:8, samples=100]  (\x, {gauss(\x)})
            -- plot[domain=8:0, samples=100]  (\x, {gauss(\x)+0.6}) -- cycle;
\begin{scope}[shift=(0:16)]
\fill[cyan!20] plot[domain=-8:0, samples=100] (\x, {gauss(\x)}) |- cycle;
\filldraw[fill=pink!20, very thick]
               plot[domain=-8:0, samples=100] (\x, {gauss(\x)})
            -- plot[domain=0:-8, samples=100] (\x, {gauss(\x)+0.6}) -- cycle;
\end{scope}
\end{tikzpicture}

\begin{tikzpicture}[
  declare function={gauss(\x)=3*exp(-(\x/3)^2);},
  scale = 0.6,
  s/.style={shift=(0:16)}]
\fill [cyan!20]
          plot[domain= 0:8, samples=100] (\x, {gauss(\x)})
  {[s] -- plot[domain=-8:0, samples=100] (\x, {gauss(\x)})
       |- (-8,0)}
       -| cycle;

\filldraw[fill=pink!20, very thick]
          plot[domain=0:8, samples=100] (\x, {gauss(\x)})
  {[s] -- plot[domain=-8:0, samples=100] (\x, {gauss(\x)})
       -- plot[domain=0:-8, samples=100] (\x, {gauss(\x)+0.6})}
       -- plot[domain=8:0, samples=100] (\x, {gauss(\x)+0.6})
       -- cycle;
% \draw[very thick] (0:8) -- ++ (up:.6);
\end{tikzpicture}
\end{document}

输出

在此处输入图片描述

相关内容