如何使用 tkz-berge 为彼得森图着色?

如何使用 tkz-berge 为彼得森图着色?

我使用以下代码在 LaTeX beamer 中绘制 Petersen 图:

\documentclass{article}
\usepackage{tkz-berge}
\begin{document}
\begin{tikzpicture}[rotate=90]
\GraphInit[vstyle=Art]
\grPetersen[RA=5, RB=3]
\end{tikzpicture}
\end{document}

该图的所有顶点都具有相同的颜色

它输出一个包含所有节点的 Petersen 图。我找不到如何为顶点着色的方法。我找到了如何更改所有顶点的颜色的方法,但这不是我需要的。我需要将一个顶点涂成红色,然后将相邻的顶点涂成蓝色,依此类推。如何做到这一点?

答案1

一般来说,我发现tkz-berge这对于在紧急情况下快速制作标准图表很有用,但如果我需要偏离标准图表,通常更快地打破纯 TikZ 并从头开始编写。这就是我在下面的例子中所做的。

tkz 大师可能能够轻松地为顶点涂上不同的颜色,但我发现这种方法更容易(而且相当简单)。

它看起来是这样的:

在此处输入图片描述

相关代码如下:

\documentclass{article}
\usepackage{tkz-berge}
\begin{document}

% Draw a cycle of vertices
\newcommand*{\drawvertices}[7]{
  \foreach \t/\mycolor in {1/#1, 2/#2, 3/#3, 4/#4, 5/#5} {
    \begin{scope}[rotate = \t * 72, xshift=#6,
      VertexStyle/.append style = {ball color = \mycolor}]
      \Vertex{#7\t}
    \end{scope}
  }
}

% Inner 5-cycle
\newcommand*{\innervertices}[5]{
  \drawvertices{#1}{#2}{#3}{#4}{#5}{\RA}{a}
}

% Outer 5-cycle
\newcommand*{\outervertices}[5]{
  \drawvertices{#1}{#2}{#3}{#4}{#5}{\RB}{b}
}

% The star-like edges in the inner cycle
\newcommand*{\staredges}[5]{
  \foreach \u/\v/\edgecolor in {1/3/#1, 3/5/#2, 5/2/#3, 2/4/#4, 4/1/#5} {
    \tikzstyle{EdgeStyle} = [color = \edgecolor]
    \Edges(a\u, a\v)
  }
}

% The outermost edges
\newcommand*{\outeredges}[5]{
  \foreach \u/\v/\edgecolor in {1/2/#1, 2/3/#2, 3/4/#3, 4/5/#4, 5/1/#5} {
    \tikzstyle{EdgeStyle} = [color = \edgecolor]
    \Edges(b\u, b\v)
  }
}

% The edges that join the inner and the outer five cycle
\newcommand*{\betweenedges}[5]{
  \foreach \u/\edgecolor in {1/#1, 2/#2, 3/#3, 4/#4, 5/#5} {
    \tikzstyle{EdgeStyle} = [color = \edgecolor]
    \Edges(a\u, b\u)
  }
}

\begin{tikzpicture}[rotate=90]
\GraphInit[vstyle=Art]

% Set the inner and outer radius as with \grPetersen
\newcommand*{\RA}{2.4cm}
\newcommand*{\RB}{5cm}

\innervertices{green}{red}{orange}{yellow}{blue}
\outervertices{purple}{cyan}{magenta}{lime}{pink}

\staredges{red}{orange}{green}{blue}{pink}

\outeredges{green}{blue}{purple}{cyan}{yellow}

\betweenedges{blue}{pink}{cyan}{teal}{yellow}

% Get numbered labels (like in the picture)
% \foreach \number in {1,...,5} {
%  \begin{scope}[rotate = \number * 72, xshift=\RB+0.8cm]
%    \draw (0,0) node {\LARGE{$\number$}};
%  \end{scope}
% }

\end{tikzpicture}
\end{document}

您所改变的

您需要将\RA和设置\RB为您想要的内/外半径;它们类似于中的参数RA和。RB\grPetersen

\innervertices{}在从到的每个命令中\betweenedges{},将颜色更改为您想要的颜色。每次,您都从与 1 相关的顶点或边开始,然后逆时针前进。(如果有帮助,请查看图片。)

颜色定义为xcolor您可以在《包装文档,或者了解如何在同一文档中定义自己的颜色。

我像平常一样设置顶点tkz-berge:使用\Vertex命令,然后使用 将它们移动到适当的位置。然后使用命令scope将它们连接起来。tkz-berge\Edges()

相关内容