我使用以下代码在 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()