如何在 Tikz 中进行这些更改?

如何在 Tikz 中进行这些更改?

在此处输入图片描述

我使用上一个问题中回答过的参考代码创建了这个序列。我是 tikz 的新手,不太会用。当我尝试删除带有鸭子的节点时,整个代码就崩溃了。我希望第二幅图像直接与 4 个节点数组连接。此外,箭头似乎也在 4 幅图像的数组中乱了。有人能帮我解释一下如何在这里进行更改吗?

\documentclass[tikz,border=3mm]{standalone}
\usetikzlibrary{chains}
\begin{document}
\begin{tikzpicture}[arj/.style={-latex}] 
\begin{scope}[start chain=R going right,
    nodes={on chain,join=by arj}]
 \path node{\includegraphics[width=3cm]{405615.jpg}}
  node{\includegraphics[width=2.5cm]{centre_crop.jpg}}
  node[scale=0.8]{\includegraphics[width=2.5cm]{example-image-duck}}
  node{\includegraphics[width=2.5cm]{example-image-duck}}
  [arj/.append style={opacity=0}]
  node[opacity=0]{\includegraphics[width=2.5cm]{example-image-duck}}
  node[opacity=0]{\includegraphics[width=2.5cm]{example-image-duck}}
  [arj/.append style={opacity=1}]
  node[opacity=1]{\includegraphics[width=2cm]{flipping.jpg}}
  ;
\end{scope} 
\path (R-5) node[matrix] {
    \node(R-5-1){\includegraphics[width=2cm]{rotate_1.jpg}};\\
    \node(R-5-2){\includegraphics[width=2cm]{rotate_2.jpg}};\\
   \node(R-5-3){\includegraphics[width=2cm]{rotate_3.jpg}};\\
   \node(R-5-4){\includegraphics[width=2cm]{rotate_4.jpg}};\\}
   (R-6) node[matrix] {\node[xscale=-1](R-6-1){\includegraphics[width=2cm]{height_shift.jpg}};\\
   \node[yscale=-1](R-6-2){\includegraphics[width=2cm]{width_shift.jpg}};\\};
\path[arj] (R-4.east) foreach \X in {1,...,4} { edge (R-5-\X.270-90*\X)}   
(R-5.east) foreach \X in {1,2} { edge (R-6-\X.180-180*\X)};   
\end{tikzpicture}
\end{document}

我还想在这里的每张图片下添加标题,我该怎么做?什么是arj./style

生成的图像应该与此类似,只是节点较少并且标题应该可见。 在此处输入图片描述

答案1

您的代码之所以对删除节点过敏,是因为chain使用了 ,它会自动对节点进行编号。但是,链中的两个条目是虚拟条目,将被矩阵替换。这些条目在链上有特定的编号。更准确地说,因为我们说start chain=R节点的名称将是R-1R-2等等。因此,如果删除矩阵前的一些节点,则需要更改矩阵的索引。我已在此代码中更改了这一点,并将位置存储在宏\matindexA和中\matindexB。在此代码中,在节点下添加一些标题就像说 一样简单pp=<caption>pp使用label,您也可以使用它为矩阵添加标题。

\documentclass[tikz,border=3mm,demo]{standalone}
\usetikzlibrary{chains}
\makeatletter% from https://tex.stackexchange.com/q/304563
\tikzset{suspend join/.code={\def\tikz@after@path{}}}
\makeatother
\begin{document}
\begin{tikzpicture}[arj/.style={-latex}] 
\begin{scope}[start chain=R going right,
    pp/.style={on chain,join=by arj,label=below:{#1}}]
 \path node[pp=blub]{\includegraphics[width=3cm]{405615.jpg}}
  node[pp=foo]{\includegraphics[width=2.5cm]{centre_crop.jpg}}
  [arj/.append style={opacity=0}]
  node[pp,minimum width=2cm]{}
  node[pp,minimum width=2cm]{}  
  [arj/.append style={opacity=1}]
  node[pp=bar,opacity=1]{\includegraphics[width=2cm]{flipping.jpg}}
  ;
\end{scope} 
\pgfmathtruncatemacro{\matindexA}{3}
\pgfmathtruncatemacro{\matindexB}{4}
\path (R-\matindexA) node[matrix,label=below:abc] {
    \node(R-\matindexA-1){\includegraphics[width=2cm]{rotate_1.jpg}};\\
    \node(R-\matindexA-2){\includegraphics[width=2cm]{rotate_2.jpg}};\\
   \node(R-\matindexA-3){\includegraphics[width=2cm]{rotate_3.jpg}};\\
   \node(R-\matindexA-4){\includegraphics[width=2cm]{rotate_4.jpg}};\\}
   (R-\matindexB) node[matrix,label=below:xyz] {\node[xscale=-1](R-\matindexB-1){\includegraphics[width=2cm]{height_shift.jpg}};\\
   \node[yscale=-1](R-\matindexB-2){\includegraphics[width=2cm]{width_shift.jpg}};\\};
\path[arj] (R-\the\numexpr\matindexA-1\relax.east) foreach \X in {1,...,4} { edge (R-\matindexA-\X.west)}   
 (R-\matindexA.east) foreach \X in {1,2} { edge (R-\matindexB-\X)};   
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容