我正在尝试使用 tkz-graph 包来组合有向图。我以前从未使用过它,所以我正在尝试将我在互联网上找到的示例拼凑在一起。以下是我目前拥有的代码:
\begin{tikzpicture}
\SetUpEdge[lw = 1.5pt, color = blue]
\GraphInit[vstyle=Normal]
\SetGraphUnit{4}
\tikzset{VertexStyle/.append style={fill}}
\Vertex{S}
\EA(S){I} \EA(I){R}
\tikzset{EdgeStyle/.style={->}}
\Edge[label=$\beta$](I)(R)
\Edge[label=$\alpha$](S)(I)
\end{tikzpicture}
这给了我一个有三个顶点和两条边的图。我还想为每个顶点添加一个循环,从同一个顶点开始和结束。我尝试添加以下三行:
\Edge[label=$1-\alpha$](S)(S)
\Edge[label=$1-\beta$](I)(I)
\Edge[label=$1$](R)(R)
但这不起作用。图表看起来很乱。我还尝试摆弄边缘的角度,方法是执行以下操作:
\tikzset{EdgeStyle/.style={->}, in=45, out=135}
\Edge[label=$1-\alpha$](S)(S)
\Edge[label=$1-\beta$](I)(I)
\Edge[label=$1$](R)(R)
但它看起来还是很乱。我只希望这些边看起来像环,上面有标签,如代码所示。任何帮助都将不胜感激。
答案1
有一个\Loop
命令可以实现这一点,请参阅手册。
语法是
\Loop[<options>](<vertex>)
括号/圆括号之前/之后没有任何空格。
在选项中可以指定
dir
- 可能的值是WE
、EA
、NO
、SO
、NOWE
、NOEA
,分别代表西、东、北、南SOWE
、SOEA
西北等,例如dir=NO
。dist
- 定义循环的大小。指定长度,例如dist=2cm
。label
- 顶点的标签,例如label={$a$}
style
- 循环的样式,允许您自定义厚度、颜色等,例如style={green,->,thick}
labelstyle
- 标签的样式,允许您自定义定位、颜色等,例如labelstyle={above}
将标签放在循环上方。
例子
\documentclass[convert]{standalone}
\usepackage{tkz-graph}
\begin{document}
\begin{tikzpicture}
\SetUpEdge[lw = 1.5pt, color = blue]
\GraphInit[vstyle=Normal]
\SetGraphUnit{4}
\tikzset{VertexStyle/.append style={fill}}
\Vertex{S}
\EA(S){I} \EA(I){R}
\tikzset{EdgeStyle/.style={->}}
\Edge[label=$\beta$](I)(R)
\Edge[label=$\alpha$](S)(I)
\Loop[dir=NO,label={$1-\beta$},labelstyle={above}](I)
\Loop[dir=SO,dist=1cm](R)
\Loop[dir=WE,dist=2cm,style={blue,very thick},label={$1-\alpha$},labelstyle={fill=white}](S)
\end{tikzpicture}
\end{document}