嗨,
我想知道在 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}
将导致出现上面报道的相同情况。