在我的Graphviz图形(用DOT编写)中,我希望每个节点都有一个标签,但除此之外,我希望一些节点有一个小标题,表示该节点的一些其他唯一值.例如,如果这是历史图表,节点的标签可能类似于"乔治华盛顿的诞生",标题可能是"参见:美国革命".
这是相当灵活的,因此标题不一定需要在节点内部,但我确实需要一些其他方式来放置明显不属于标签的文本(例如,是不同的大小,可能是不同的颜色)并且位于不同的位置,但仍然显然是节点的一部分.
有没有办法做到这一点?
我对graphviz运气很好,并且能够制作出我需要的几乎所有图表.我想复制这个:
http://en.wikipedia.org/wiki/File:ICS_Structure.PNG
尽我所能.该图的底部全部从上到下流动,我的工作正常.我无法做的是将前三个孩子放在"事件指挥官"的正下方.他们左右分支.另请注意前8个节点中的边缘是如何共享的.点可能吗?我可以处理其他一切,但不能处理那些顶级节点.有人能给我一个解决这个问题的线索吗?
我试图用Dot和GraphViz绘制一个家谱.
这就是我目前拥有的:
# just graph set-up
digraph simpsons {
ratio = "auto"
mincross = 2.0
# draw some nodes
"Abraham" [shape=box, regular=1, color="blue"] ;
"Mona" [shape=box, regular=1, color="pink"] ;
"Clancy" [shape=box, regular=1, color="blue"] ;
"Jackeline" [shape=box, regular=1, color="pink"] ;
"Herb" [shape=box, regular=1, color="blue"] ;
"Homer" [shape=box, regular=1, color="blue"] ;
"Marge" [shape=box, regular=1, color="pink"] ;
"Patty" [shape=box, regular=1, color="pink"] ;
"Selma" [shape=box, regular=1, color="pink"] ;
"Bart" [shape=box, regular=1, color="blue"] ;
"Lisa" [shape=box, regular=1, color="pink"] ;
"Maggie" [shape=box, regular=1, color="pink"] ;
"Ling" …Run Code Online (Sandbox Code Playgroud) 我试图以这种方式设置节点的大小:
controller[shape=circle,width=.5,label="Controller",style=filled,fillcolor="#8EC13A"];
Run Code Online (Sandbox Code Playgroud)
但是所有三个节点都有不同的大小.我该如何设置固定大小?
有谁知道如何将换行符放在节点的标签上?\n不起作用 - 而是出现一些新节点.
我正在构建一个点文件来表示计算机硬件以及与网络交换机和显示器的物理连接.我通过点程序处理它看起来不错,但我认为我真的希望它由neato处理以创建一个更"自由形式"的图片,因为它开始出现问题.现在当我用neato运行我的大文件时,一切都重叠了.
我试图找出定义overlap属性的语法.下面是我的点文件的子集.
graph g {
node [shape=record,height=.1];
PC8[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC8}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];
PC9[label="{{<GigE1>GigE1|<GigE2>GigE2}|{<name>PC9}|{<dvi1>dvi1|<dvi2>dvi2|<dvi3>dvi3|<dvi4>dvi4}}"];
C1[label = "{{<dvi1>dvi1}|{<name>C1}}"];
C2[label = "{{<dvi1>dvi1}|{<name>C2}}"];
C3[label = "{{<dvi1>dvi1}|{<name>C3}}"];
C4[label = "{{<dvi1>dvi1}|{<name>C4}}"];
D1[label = "{{<dvi1>dvi1}|{<name>D1}}"];
D2[label = "{{<dvi1>dvi1}|{<name>D2}}"];
"PC8":dvi1 -- "C1":dvi1;
"PC8":dvi2 -- "C2":dvi1;
"PC8":dvi3 -- "C3":dvi1;
"PC8":dvi4 -- "C4":dvi1;
"PC9":dvi1 -- "D1":dvi1;
"PC9":dvi2 -- "D2":dvi1;
}
Run Code Online (Sandbox Code Playgroud) 默认情况下,Graphviz中的边标签位于边缘的右侧.我正在寻找一种方法将标签放在边缘上,以边缘为中心.(它仍然可读,因为我正在改变边缘的颜色).
有任何想法吗?
我想同时渲染多个树,并将所有根节点和所有叶节点放在同一级别上.
这是我正在尝试做的一个例子.根节点A和X在同一级别上,叶节点B,D和Z也是如此.

我没有成功尝试将根放在一个等级中,然后留下另一个等级,如下所示:
digraph G {
rankdir = TB;
subgraph {
A -> B
A -> C
C -> D
X -> Y
rank = same; A; X;
rank = same; B; D; Y;
} /* closing subgraph */
}
Run Code Online (Sandbox Code Playgroud)
并且在一切都处于相同等级的情况下得到了这个结果.

关于我应该尝试什么的任何建议?我已经确定了根和叶子.
边缘上的Rank属性具有五个值"same","min","source","max","sink".除了"相同",我不知道何时使用其他值.
min
\begin{dotpic}
rankdir=LR;
size="7,5";
node[shape=circle];
C->A;
{rank=min;A;B}
B->D
A->B;
\end{dotpic}
max
\begin{dotpic}
rankdir=LR;
size="7,5";
node[shape=circle];
C->A;
{rank=max;A;B}
B->D
A->B;
\end{dotpic}
source
\begin{dotpic}
rankdir=LR;
size="7,5";
node[shape=circle];
C->A;
{rank=source;A;B}
B->D
A->B;
\end{dotpic}
sink
\begin{dotpic}
rankdir=LR;
size="7,5";
node[shape=circle];
C->A;
{rank=sink;A;B}
B->D
A->B;
\end{dotpic}
Run Code Online (Sandbox Code Playgroud)
通过对我的vim环境的测试,我可以发现这些值存在一些差异.但不知道它们到底是什么.
我有digraph许多独立和简单subgraphs的各种尺寸.dot水平放置所有这些子图,所以我最终得到一个40000x200输出文件,例如:
G1 G2 G3 G.....4 G5
Run Code Online (Sandbox Code Playgroud)
我如何告诉dot在两个维度中布局这些子图以获得类似的东西:
G1 G2 G3
G.....4
G5
Run Code Online (Sandbox Code Playgroud)
谢谢.
dot ×10
graphviz ×10
family-tree ×1
genealogy ×1
geometry ×1
graph-layout ×1
neato ×1
newline ×1
shape ×1
size ×1