我很乐意去:
我在这样的图表上尝试变体:
digraph G {
node [shape=circle penwidth=2 fixedsize=true label=""]
token [shape=point ]
place [ xlabel="P2" _background="digraph G { e[shape=point ] }"]
}
在this online form中可测试导致:
如何在圆圈内放置一个圆点(token
)place
)
答案 0 :(得分:0)
Graphviz程序通常不喜欢有意将节点放置在其他节点之上,但是在特殊情况下允许它- neato -n 和 neato -n2 允许它(请参阅常见问题解答。
我在此输入文件中添加了新属性(点):
digraph G {
node [shape=circle penwidth=2 label=""]
n1 [ xlabel="P1" dotme=1]
n2 [ xlabel="P2" ]
n3 [ xlabel="P3" dotme=1]
n1 -> n2
n1 -> n3
n2 -> n3
}
然后通过这套Graphviz程序运行它:
dot -Tdot needsadot.gv |gvpr -c -fdotMe.gvpr |neato -n2 -Tpng >needsadot.png
gvpr程序dotMe.gvpr在此处:
BEGIN {
int nxt=0;
}
N {
int i;
string str1, str2;
node_t n;
if (hasAttr($, "dotme")){
if (strcmp($.dotme,"1")==0){
// create a new node and position it on top of existing node
str1=sprintf("__dot_%d", ++nxt);
n=node($G, str1);
n.pos=$.pos;
n.shape="point";
}
}
}
dotMe.gvpr 在dotme == 1的每个节点的上方(相同 pos )添加一个新节点。
令人费解,但可重用。
答案 1 :(得分:0)