在 TikZ 中使用 [midway]、[near end] 等作为权重

在 TikZ 中使用 [midway]、[near end] 等作为权重

是否可以使用命令[midway][near end]等移动顶点权重[near start]?仅仅陈述{above}{below}并不总是有帮助,因为权重有时会重叠:

\documentclass{article}
\usepackage{tikz}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=4,auto,swap]
\foreach \pos /\name in {{(0,0)/4},{(1,0)/5},{(2,0)/6},{(0,1)/1},{(1,1)/2},{(2,1)/3}} \node[vertex](\name) at \pos{$\name$};
\foreach \source /\dest /\weight /\pos in {1/6/12/{above left},3/4/10/{above right},4/5/6/{below},5/6/9/{below},1/5/7/{above left},3/5/6/{right}} \path[edge] (\source) -- node[weight, \pos] {$\weight$} (\dest);
\foreach \source /\dest /\weight in {1/2/12,2/3/7,2/4/4,3/6/5,4/1/10,6/2/8} \path[arrow] (\source) -- node[weight] {$\weight$} (\dest);
\end{tikzpicture}
\end{center}
\end{document}

答案1

这个答案提出了 [0 1] 之间的相对位置概念,其中 0 表示一条线starting point,1 表示end point一条线。因此,分别pos=0.1, 0.5, 0.9表示near startmidwaynear end。通过这样做,位置的单词被转换成0和之间的十进制数1。这些数字可以由用户在循环中定义foreach

注意:虚线彩色线是为了演示两个节点之间的权重,可以轻松从中删除[options]

在此处输入图片描述

代码:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{arrows,positioning}
\begin{document}
\begin{center}
\begin{tikzpicture}[scale=4,auto,swap]
\foreach \pos/\name in {{(0,0)/4},{(1,0)/5},{(2,0)/6},{(0,1)/1},{(1,1)/2},{(2,1)/3}}
{\node[draw,circle,black] (\name) at \pos{$\name$};}
\foreach \source /\dest /\weight /\pos in {1/6/12/0.1,3/4/10/0.25,4/5/6/0.40,5/6/9/0.65,1/5/7/0.80,3/5/6/0.95} 
{\path[draw,dotted,cyan] (\source) -- node[pos=\pos, above] {$\weight$} (\dest);}
\foreach \source /\dest /\weight/\pos in {1/2/12/0.1,2/3/7/0.25,2/4/4/0.40,3/6/5/0.65,4/1/10/0.8,6/2/8/0.95} 
{\path[draw,dotted, red] (\source) -- node[pos=\pos, below] {$\weight$} (\dest);}
\end{tikzpicture}
\end{center}
\end{document}

相关内容