我没有用 LaTeX 绘图的经验,只是偶然发现了这个tkz-berge
包。我想画一个完全图、一个小世界图和一个随机连通图。
完整的图表很简单
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grComplete[RA=2/sin(60)]{10}
\end{scope}
\draw (12,-3) node {A Complete Graph};
\end{tikzpicture}
小世界图基本上是一个圆,上面加了几条“与”圆相交的边。因此,我开始用
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grCycle[prefix=a,RA=2/sin(60)]{10}
\end{scope}
\draw (12,-3) node {A Small World Graph};
\end{tikzpicture}
但是我如何手动向该图添加边,即如何引用已自动生成的节点并要求包在它们之间画一条边。
为了得到一个与其他两个节点数量和位置相同的随机图,我开始使用
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grEmptyCycle[prefix=a,RA=2/sin(60)]{10}
\end{scope}
\draw (12,-3) node {A Random Graph};
\end{tikzpicture}
效果不错,但现在我遇到了和以前一样的问题,我想手动将边添加到已绘制的节点。请注意,边是否由 LaTeX 随机生成对我来说并不重要,我很乐意手动添加边,使其看起来像一个随机图。
答案1
通常标签打印在节点内部,因此您可以使用以下方式连接它们\Edges(<name1>,<name2>,...)
代码:
\documentclass[margin=5mm]{standalone}
\usepackage{tkz-berge}
\begin{document}
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grComplete[RA=2/sin(60)]{10}
\end{scope}
\draw (12,-3) node {A Complete Graph};
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grCycle[prefix=a,RA=2/sin(60)]{10}
\end{scope}
\Edges(a1,a5,a9)
\Edges[style={dashed,lightgray}](a7,a2)
\draw (12,-3) node {A Small World Graph};
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grEmptyCycle[prefix=a,RA=2/sin(60)]{10}
\end{scope}
\Edges(a0,a1,a2,a3)
\draw (12,-3) node {A Random Graph};
\end{tikzpicture}
\end{document}
使用\SetVertexNoLabel
和\SetVertexLabel
您可以禁用和启用标签打印。
代码:
\documentclass[margin=5mm]{standalone}
\usepackage{tkz-berge}
\begin{document}
\SetVertexNoLabel% disables labels
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grComplete[RA=2/sin(60)]{10}
\end{scope}
\draw (12,-3) node {A Complete Graph};
\end{tikzpicture}
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grCycle[prefix=a,RA=2/sin(60)]{10}
\end{scope}
\Edges(a1,a5,a9)
\Edges[style={dashed,lightgray}](a7,a2)
\draw (12,-3) node {A Small World Graph};
\end{tikzpicture}
\SetVertexLabel% enable labels
\begin{tikzpicture}
\begin{scope}[xshift=12cm]
\grEmptyCycle[prefix=a,RA=2/sin(60)]{10}
\end{scope}
\Edges(a0,a1,a2,a3)
\draw (12,-3) node {A Random Graph};
\end{tikzpicture}
\end{document}