如何使从钻石西角到钻石东角的环路看起来像图中这样?
数字
代码
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[->, >=stealth, auto, semithick,
node distance=3cm,shorten >=2pt,shorten <=2pt,
mynode/.style={fill=white,draw,
diamond,thick,inner sep=5pt}]
\node[mynode] (A) {$1$};
\node[mynode] (B)[right of=A] {$2$};
\node[mynode] (C)[right of=B] {$3$};
\node[mynode] (D)[right of=C] {$4$};
\path[black](A.east) edge[bend left] node{S} (B.west)
(B.west) edge[bend left] node{U} (A.east)
(B.east) edge node{E} (C.west)
(C.east) edge node{S} (D.west)
(B) edge[loop above] node{P} (B)
(B) edge[loop below] node{C} (B)
(C) edge[loop above] node{N} (C);
\end{tikzpicture}
\end{document}
输出
答案1
这是一种方法,使用三个单独的\draw
s。
\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes.geometric}
\usepackage{amssymb}
\begin{document}
\begin{tikzpicture}[->, >=stealth, auto, semithick,
node distance=3cm,shorten >=2pt,shorten <=2pt,
mynode/.style={fill=white,draw,
diamond,thick,inner sep=5pt}]
\node[mynode] (A) {$1$};
\node[mynode] (B)[right of=A] {$2$};
\node[mynode] (C)[right of=B] {$3$};
\node[mynode] (D)[right of=C] {$4$};
\path[black](A.east) edge[bend left] node{S} (B.west)
(B.west) edge[bend left] node{U} (A.east)
(B.east) edge node{E} (C.west)
(C.east) edge node{S} (D.west);
\draw (B.west) to[out=110,in=70,looseness=3] node{P} (B.east);
\draw (B.west) to[out=-110,in=-70,looseness=3] node[swap]{C} (B.east);
\draw (C.west) to[out=110,in=70,looseness=3] node{N} (C.east);
\end{tikzpicture}
\end{document}
答案2
另一种方法是使用库arrows.meta
,bending
和quotes
而arc
不是loop
:
\documentclass[tikz, border=5mm]{standalone}
\usetikzlibrary{arrows.meta, bending, quotes, shapes.geometric}
\begin{document}
\begin{tikzpicture}[-{Stealth[bend]}, auto, semithick,
node distance=3cm,
shorten >=2pt, shorten <=2pt,
mynode/.style={diamond,draw, thick, minimum size=8mm, inner sep=0pt}
]
\node[mynode] (A) {$1$};
\node[mynode] (B)[right of=A] {$2$};
\node[mynode] (C)[right of=B] {$3$};
\node[mynode] (D)[right of=C] {$4$};
\path[black](A.east) edge[bend left, "S"] (B.west)
(B.west) edge[bend left, "U"] (A.east)
(B.east) edge["E"] (C.west)
(C.east) edge["S"] (D.west);
\draw ([yshift= 2pt] B.west) arc (235:-55:0.7) node[midway,below] {P};
\draw ([yshift=-2pt] B.west) arc (-235:55:0.7) node[midway,above] {C};
\draw (C.west) arc (235:-55:0.7) node[midway,below] {N};
\end{tikzpicture}
\end{document}
在确定arc
半径时end angle
考虑了以下关系:
arc
和P
分别C
垂直移动 2pt,以使它们不与节点 1 和 2 之间的弯线重叠。