删除并收缩拟阵图

删除并收缩拟阵图

我正在写关于拟阵的提案。在提案的一部分中,我需要绘制一个拟阵,其中一侧删除一个元素,另一侧收缩同一个元素。与此类似, 在此处输入图片描述

我的问题是,我对 tikz 还很陌生,我不知道该怎么做。有人能给我介绍一个能帮助我绘制拟阵的指导网站吗?

答案1

这是掌握图形绘制库的好机会(参见 PGF 手册第 IV 部分以及第 III 部分的第 19 章),特别是“子图节点”的概念(参见手册中的 27.10“使用几种不同的布局绘制单个图形” 3.0.1a)。

不幸的是,尽管有各种花哨的布局算法,但通常当需要特定布局时,仍然需要手动定位节点。层之间的调整也有点麻烦。不过,这比没有图库要省事一些。

使用以下方式编译LuaLaTeX

\RequirePackage{luatex85}
\documentclass[tikz]{standalone}
\usetikzlibrary{graphs,graphdrawing,arrows.meta}
\usegdlibrary{trees,circular}
\begin{document}
\begin{tikzpicture}[every loop/.style={}, >=Triangle]
\graph [dots/.style={
  empty nodes, 
  nodes={
    circle, fill, inner sep=0, minimum size=0.75ex
  }}, 
  binary tree layout]{
  % Root
  root/ // [simple necklace layout, dots] {
      a -- b -- c -- d -- a, b -- d;
    };
  % First layer
  child1/ // [simple necklace layout, dots] {
      a1 -- b1 -- c1 -- d1 -- a1
    };
  child2/[minimum height=1cm] // [no layout, dots] {
      a2[at=(180:1)], b2[at=(0:0)],  c2[at=(0:1)];
      a2 --[bend left] b2 -- [bend left] c2; c2 --[bend left] b2 --[bend left] a2;
    };
   % Second layer
   child11/ // [no layout, dots, /tikz/.cd, x=0.707cm, y=0.707cm] {
       a11[at=(0:1)], b11[at=(90:1)], c11[at=(180:1)], d11[at=(270:1)];
       a11 -- b11 -- c11 -- d11;
     };
   child12/ // [no layout, dots, /tikz/.cd, x=0.75cm, y=0.75cm] {
       a12[at=(90:1)], b12[at=(210:1)], c12[at=(330:1)];
       a12 -- b12 -- c12 -- a12;
     };
   child21/[minimum height=1cm] // [no layout, dots] {
       a21[at=(180:1)], b21[at=(0:0)], c21[at=(0:1)];
       a21 -- b21 --[bend left] c21 --[bend left] b21;
     };
   child22/[minimum height=1cm] // [no layout, dots] {
       a22[at=(0:0)] --[bend left] b22[at=(0:1)] --[bend left] a22 --[loop left] a22;
     };
   % Third layer
   child121/ // [no layout, dots, /tikz/.cd, x=0.707cm, y=0.707cm] {
       a121[at=(180:1)], b121[at=(90:1)], c121[at=(0:1)];
       a121 -- b121 -- c121;
     };
   child122/[minimum height=1cm] // [no layout, dots] {
     a122[at=(0:0)], b122[at=(0:1)];
     a122 --[bend left] b122 --[bend left] a122;
   };
   child211/ // [no layout, dots] {
     a211[at=(270:1)], b211[at=(0:0)], c211[at=(0:1)];
     a211 -- b211 -- c211;
   };
   child212/ // [no layout, dots] {
     a212[at=(270:1)], b212[at=(0:0)];
     a212 --[loop below] a212 -- b212;
   };
   child221/ // [no layout, dots] {
     a221[at=(270:1)], b221[at=(0:0)];
     a221 -- b221 --[loop above] b221;
   };
   child222/[minimum height=1.5cm] // [no layout, dots]{
     a222 --[loop below] a222 --[loop above] a222;
   };
   % Fourth layer
   child1221/ // [no layout, dots] {
     a1221[at=(0:0)], b1221[at=(0:1)];
     a1221 -- b1221;
   };
   child1222/ // [no layout, dots] {
     a1222 --[loop left] a1222;
   };
   % Tree of subgraph nodes
   root -> {
    child1 -> {
      child11 [label=below:$x^3$],
      child12 -> {
        child121 [label=below:$x^2$],
        child122 -> {
          child1221 [label=below:$x$],
          child1222 [label=below:$y$]
        }
      }
    },
    child2 -> {
      child21 -> {
        child211 [label=below:$x^2$],
        child212 [label={[shift=(270:0.5)]below:$xy$}]
      }, 
      child22 -> {
        child221 [label=below:$xy$],
        child222 [label=below:$y^2$]
      }
    }
  };
};
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容