如何在此图上的网格节点上添加聚类?

如何在此图上的网格节点上添加聚类?

考虑以下代码:

\documentclass{article}
\usepackage{tkz-graph}

\begin{document}
\begin{figure}
    \centering
\begin{tikzpicture}
\SetGraphUnit{2}



\Vertex[x=0,y=0]{1}
\Vertex[x=2,y=0]{2}
\Vertex[x=2,y=2]{3}
\Vertex[x=0,y=2]{4}
%%
\Edge(1)(2)
\Edge(2)(3)
\Edge(3)(4)
\Edge(4)(1)
%%
\Vertex[x=2,y=4]{5}
\Vertex[x=4,y=4]{6}
\Vertex[x=4,y=6]{7}
\Vertex[x=2,y=6]{8}
%%
\Edge(4)(5)
\Edge(5)(6)
\Edge(6)(7)
\Edge(7)(8)
\Edge(8)(5)
%%
\Vertex[x=4,y=0]{9}
\Vertex[x=6,y=0]{10}
\Vertex[x=6,y=2]{11}
\Vertex[x=4,y=2]{12}
%%
\Edge(9)(10)
\Edge(10)(11)
\Edge(11)(12)
\Edge(12)(9)
\Edge(11)(6)
%%



\end{tikzpicture}
\end{figure}



\end{document}

这应该生成:

在此处输入图片描述

问题:如何在三个 4 节点团上添加彩色集群。我想要这样的东西:

在此处输入图片描述

答案1

使用纯 TikZ 和库fit可以做到这一点。我添加了backgrounds库并将这些框放在边缘和顶点后面。我还选择了仅 a fill opacity(而不是draw opacity),这意味着边框仍然完全不透明。还有一个包罗万象的opacity钥匙。

rotate fit钥匙对于红色方框来说至关重要。

由于该fit库在确定大小时仅检查北、东、南和西锚点,因此我们必须明确给出四个坐标的列表。


在这个简单例子中,我还明确给出了旋转角度。如果您需要自动实现这一点,则需要做更多工作。

代码

\documentclass[tikz]{standalone}
\usepackage{tkz-graph}
\usetikzlibrary{fit}
\usetikzlibrary{backgrounds}
\begin{document}
\begin{tikzpicture}[
  fitty/.style={
    fill opacity=.7,
    draw=#1!80,
    fill=#1!50,
    rounded corners,
  }
]
\SetGraphUnit{2}

\Vertex[x=0,y=0]{1}   \Vertex[x=2,y=0]{2}
\Vertex[x=2,y=2]{3}   \Vertex[x=0,y=2]{4}
%%
\Edge(1)(2)   \Edge(2)(3)
\Edge(3)(4)   \Edge(4)(1)
%%
\Vertex[x=2,y=4]{5}  \Vertex[x=4,y=4]{6}
\Vertex[x=4,y=6]{7}  \Vertex[x=2,y=6]{8}
%%
\Edge(4)(5)   \Edge(5)(6)
\Edge(6)(7)   \Edge(7)(8)
\Edge(8)(5)
%%
\Vertex[x=4,y=0]{9}  \Vertex[x=6,y=0]{10}
\Vertex[x=6,y=2]{11} \Vertex[x=4,y=2]{12}
%%
\Edge(9)(10)  \Edge(10)(11)
\Edge(11)(12) \Edge(12)(9)
\Edge(11)(6)
%%
\begin{scope}[on background layer]
\foreach \corners in {(8)(6), (1)(3), (9)(11)}
  \node[fitty=blue, fit=\corners]{};

\foreach \rot/\corners in {
  45/(4.south west) (5.north east)(4.north west) (5.south east),
 -45/(6.north west)(11.south east)(6.north east)(11.south west)}
\node[rotate fit=\rot, fit=\corners, fitty=red]{};
\end{scope}
\end{tikzpicture}
\end{document}

在此处输入图片描述

相关内容