使用非平凡图片作为图表中的节点

使用非平凡图片作为图表中的节点

我想使用一些图片作为图表中的节点。我认为该forest包最适合图表。但我不能在这里使用 tikz-picture 中的字符作为树的节点。

参见以下评论:\fineMatrix{b}用空单元格绘制(有填充但没有字符)。

\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usepackage{forest}

\newcommand{\fineMatrix}[1]{
\begin{tikzpicture}
    \draw (0,0) grid (2, 2);
    \shade[top color=yellow, bottom color=gray] (0,1) rectangle (1,2);
    \shade[top color=gray, bottom color=yellow] (1,0) rectangle (2,1);
    \node[anchor=center] at (0.5, 0.5) {  $#1_{21}$  };
    \node[anchor=center] at (1.5, 1.5) {  $#1_{12}$  };
    \end{tikzpicture}
}

\begin{document}

    %simple tree - fine
    \begin{forest}
        for tree=
        [A [
           B
        ]]
    \end{forest}

%some picture - fine also
\fineMatrix{c}

%tree with picture - charaters was lost :(
    \begin{forest}
        for tree=
        [A [
        {\fineMatrix{b}}
        ]]
    \end{forest}

\end{document}

答案1

tikzpicture不支持嵌套s。forest是 a tikzpicture。因此,遗憾的是,您不能指望它能正常工作。

这样的事情怎么样?

\documentclass[border=10pt]{standalone}
\usepackage{forest}
\usetikzlibrary{calc}
\forestset{%
  fine Matrix/.style={
    minimum height = 2cm,
    minimum width = 2cm,
    tikz+={
      \draw (.north) coordinate (t) ++(-1,-2) coordinate (bl) rectangle ++(2,2) coordinate (tr);
      \shade [top color=yellow, bottom color=gray, draw] ($(bl)!.5!(bl |- tr)$) coordinate (l) rectangle (t);
      \shade [top color=gray, bottom color=yellow, draw] (bl -| t) rectangle (l -| tr) coordinate (r);
      \node [anchor=center] at ($(bl)!.5!(l -| t)$) {$#1_{21}$};
      \node [anchor=center] at ($(l -| t)!.5!(tr)$) {$#1_{12}$};
    }
  }
}

\begin{document}
\begin{forest}
  [A
    [, fine Matrix=b
    ]
  ]
\end{forest}
\end{document}

树中的方格节点

注意

for tree=

然后立即启动树规范不会执行任何操作,并且可能会出现问题,因为它需要一个参数。要么删除,要么说for tree={}如果出于某种原因您想为后代保留它。

相关内容