Tikz 图:节点上方的权重

Tikz 图:节点上方的权重

嗨,

我想知道在 Tikz 图中是否可以将权重放在顶点上方(这样,到目标节点的所有边都具有相同的权重),而不是放在边上方。以下是示例:

在此处输入图片描述

答案1

一个简单的解决方案是将权重放在节点的北部,使用上述样式选项:

\documentclass[crop]{standalone}
\usepackage{tikz}
\usetikzlibrary{shapes}
\begin{document}

\tikzset{mynode/.style={ellipse,minimum height=20pt,minimum width=30pt,draw},}


\begin{tikzpicture}
  \draw
    (-1,-2) node[mynode] (ini) {ini}
    (0,0) node[mynode] (0) {0}
    (3,0) node[mynode] (1) {1}
    (0.north) node[above] {4}
    (1.north) node[above] {6} ;
  \draw[-latex]  
    (ini)->(0) ;
  \draw[-latex]  
    (0)->(1) ;
\end{tikzpicture}

\end{document}

其结果为: 节点上方带有权重的图

答案2

有一种简单的方法可以标记一个节点相对于另一个节点的位置。要对图表的左上角执行此操作,请查看以下代码:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{calc,shapes}

\tikzset{mynode/.style={ellipse,minimum height=20pt,minimum width=30pt,draw},}
\tikzstyle{every picture}=[->,>=latex]

\begin{document}

\begin{tikzpicture}
\node[mynode] (0) at (0,0) {0};
\node[mynode] (1) at (3,0) {1};
\node[mynode] (ini) at (-1,-2) {ini};
\node (0top) at ($(0) + (90:.6)$) {4};
\node (1top) at ($(1) + (90:.6)$) {6};
\draw (ini) to (0);
\draw (0) to (1);
\end{tikzpicture}

\end{document}

结果将是这样的:

在此处输入图片描述

我使用.6表示主节点和上面显示数字的节点之间的距离,但您可以根据需要进行调整。此外,我使用的放置角度是90,但如果您希望数字出现在节点下方,则可以更改该角度 - 只需使用-90

答案3

这里有一个更自动化的方法(为了避免标签的延迟定义)。碱基取自如何修改 TikZ 中的节点以自动在其顶部添加一条线?这种方法的优点在于,当定义节点时,可以立即决定是否定位标签。还可以对方面进行一些自定义。

示例(从 JimboBimbo 窃取的结构):

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes,positioning}

\pgfmathtruncatemacro\labelabove{4}% <= change this value to modify the weight distance from the node

\tikzset{my node/.style 2 args={
        ellipse,minimum height=20pt,minimum width=30pt,draw,
        append after command={
            \pgfextra{%                 
                \begin{pgfinterruptpath}% just to be safe
                \node[#2,above= \labelabove pt of \tikzlastnode] {#1};
                \end{pgfinterruptpath}%
            }
        }
    }
}

\begin{document}

\begin{tikzpicture}
\node[my node={4}{red,circle,draw}] (0) at (0,0) {0};
\node[my node=6] (1) at (3,0) {1};
\node[my node] (ini) at (-1,-2) {ini};
\draw[-stealth] (ini) to (0);
\draw[-stealth] (0) to (1);
\end{tikzpicture}

\end{document}

结果:

在此处输入图片描述

的第一个参数my node接受权重作为标签,并且可以省略(按照ini);对于特殊需要,可以通过的第二个参数(my node可选)定制权重的方面。

请注意,前面的方法并不是唯一可行的方法。更简单的方法是:

\documentclass{article}

\usepackage{tikz}
\usetikzlibrary{shapes,positioning}


\tikzset{my node/.style={
        ellipse,minimum height=20pt,minimum width=30pt,draw,
    }
}

\begin{document}

\begin{tikzpicture}
\node[my node, label={[label distance=5pt,red,circle,draw]90:4}] (0) at (0,0) {0};
\node[my node,label={[label distance=5pt]90:6}] (1) at (3,0) {1};
\node[my node] (ini) at (-1,-2) {ini};
\draw[-stealth] (ini) to (0);
\draw[-stealth] (0) to (1);
\end{tikzpicture}

\end{document}

将导致出现上面报道的相同情况。

相关内容