给该图的一些有向边和无向边添加权重

给该图的一些有向边和无向边添加权重

我有这张图表:

有向图

我想添加节点来指定某些箭头和无向边的权重。边 (A)(r) 的容量应为 = \infty,并且某些无向边的节点应具有一些关联的数字。

我通过分离无向箭头来编码边((n1) edge (n2)对无向边使用符号,\draw [->]对有向边使用)。这样做的问题是,对于箭头,我无法将代码更改为类似 的内容(n1) edge node[MyStyle]{T} (n2),也无法将其写入无向边集中,因为这会在相同节点之间绘制两个单独的边。

我怎样才能以简单的方式调整此代码以获得我想要的结果?

\documentclass{article}

\usepackage{tikz}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{setspace}

\begin{document}
\begin{center}
\begin{tikzpicture}
[scale=1.2,auto=left, every node/.style={ circle, fill=blue!20,   minimum size=2.5mm, inner sep=2pt}
              ]

\tikzset{My Style/.style={scale=0.8, black,fill=white,opacity=.2,text opacity=1, minimum size=0.5cm, }}

\tikzset{>=latex}

\node  [fill = white, draw = black] (n1) at (0, 4){A};
\node  [rectangle] (n2) at (1, 4){r};
\node  [rectangle] (n3) at (2, 5){p};
\node  [rectangle] (n4) at (3.5, 5){q};
\node  [rectangle] (n5) at (3.5, 3.5){s};
\node  [fill = white, draw = black] (n6) at (5, 4){B};
    \path

(n2) edge[bend left = 15] (n3)
(n3) edge (n4)
(n4) edge (n5)
(n2) edge[bend right = 15] (n5);

\draw [->]   (n1) edge (n2) (n4) edge[bend left = 15]  (n6) (n5) edge[bend right = 15] (n6);

\end{tikzpicture}
\captionof{figure}{}
\end{center}
\end{document}

谢谢

答案1

之后添加带有坐标的节点肯定是不是这是一个好主意,因为它们不会遵循您在原始图表上所做的任何更改。
相反,您可以使用以下结构:\path (n1) edge node{content} (n2);如下面的代码所示。
请注意,您不必分别绘制没有箭头的边和有箭头的边。将[->]后面的内容添加edge到您的路径中就足以选择哪一个应该带箭头。

我还定义了scopes允许您使用不同种类的,node styles而不必到处写它们。现在您应该能够根据需要自定义图片。

\documentclass{article}

\usepackage{tikz}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{setspace}

\begin{document}
    \begin{center}
        \begin{tikzpicture}[>=latex,scale=1.5,auto=left]
    
            \begin{scope}[every node/.style=
                            {fill=blue!20,
                             minimum size=2.5mm,
                             inner sep=2pt}]
                \node  [circle,fill = white, draw = black] (n1) at (0, 4){A};
                \node  (n2) at (1, 4){r};
                \node  (n3) at (2, 5){p};
                \node  (n4) at (3.5, 5){q};
                \node  (n5) at (3.5, 3.5){s};
                \node  [circle,fill = white, draw = black] (n6) at (5, 4){B};
            \end{scope}
            
            \begin{scope}[every node/.style={inner sep=1pt}]
                \path
                    (n1) edge[->] node {$\infty$} (n2)
                    (n2) edge[bend left = 15] node{$4$}  (n3) 
                    (n3) edge (n4)
                    (n4) edge (n5)
                    (n2) edge[bend right = 15] node {$-8$}(n5)
                    (n4) edge[->,bend left = 15]  (n6) 
                    (n5) edge[->,bend right = 15] (n6);
            \end{scope}      
        
        \end{tikzpicture}
    \captionof{figure}{}
    \end{center}
\end{document}

图边上的节点

答案2

您可以只添加新节点:

\node [fill = white, scale= 0.6] (v1) at (0.5, 4.1){$\infty$};
\node [fill = white, scale= 0.6, rotate = -25] (v2) at (4.25, 4.84){$\infty$};
\node [fill = white, scale= 0.6] (v3) at (4.24, 3.72){$0$};

相关内容