边缘厚度变化

边缘厚度变化

几个月前,我问过一个问题,关于如何优雅地绘制一个有点复杂的图表。感谢社区,我得到了巨大的帮助。为了避免重复,这里是提到的帖子的链接:

排版具有加权边、不同顶点大小、顶点中有多条线的有向图

如您所见,在这个加权有向图中,边也有权重。我的问题是,如何增强 Gonzalo Medina 提出的解决方案,以便边在视觉上也可以根据权重进行区分?

例如,正如您在原始图中看到的, (d,c) 的权重为 0.9,而 (e,a) 的权重为 0.1,因此我希望将前者画得比后者粗得多。

答案1

您可以使用line width\draw命令的选项,并且如果愿意,您也可以使用该\node命令的相同选项对节点轮廓执行相同的操作。

在下面的代码中,我使用了两倍line width于“wwight”的值pt。但这样一来,大多数行看起来都一样,因此请调整值line width以获得所需的效果。

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning}

\definecolor{myyellow}{RGB}{255,255,150}

\newcommand\mytext[3][\scriptsize]{#2\\#1 #3}
\newcommand\mynode[4][]{%
  \node[mynode,#1,text width=\the\dimexpr#2cm*3] (#3) {\mytext{#3}{#2 #4}}; 
}

\begin{document}

\begin{tikzpicture}[
node distance=2cm,
mynode/.style={
  circle,
  draw,
  fill=myyellow,
  align=center}
]
\mynode[line width=1.34pt]{0.67}{d}{(130/61)}
\mynode[below=of d,line width=0.9pt]{0.45}{c}{(130/61)}
\mynode[below=of c,line width=1.0pt]{0.50}{a}{(130/61)} 
\mynode[left=of a,line width=1.34pt]{0.67}{b}{(130/61)} 
\mynode[right=of c,line width=1.9pt]{0.95}{e}{(130/61)}
\draw[->,line width=1.8pt] 
  (d) -- node[rotate=90,below] {\mytext[\normalsize]{0.9}{(72/8)}} (c); 
\draw[->,line width=1.6pt] 
  (c) -- node[rotate=90,below] {\mytext[\normalsize]{0.8}{(44/11)}} (a);
\draw[->,line width=1.7pt] 
  (d) -- node[sloped,below] {\mytext[\normalsize]{0.85}{(68/12)}} (b); 
\draw[->,line width=0.2pt] 
  (e) -- node[sloped,below] {\mytext[\normalsize]{0.1}{(4/36)}} (a); 
\draw[->,line width=1.5pt] 
  (b) to[bend left] node[above] {\mytext[\normalsize]{0.75}{(56/24)}} (a); 
\draw[->,line width=1.8pt] 
  (a) to[bend left] node[below] {\mytext[\normalsize]{0.9}{(63/7)}} (b); 
\end{tikzpicture}

\end{document}

在此处输入图片描述

相关内容