graphviz 定义更多 "defaults"

标签 graphviz

需要绘制一个复杂的图形,其中将包含 3 种类型的边和几个预定义的节点类型。

是否可以稍微定义更多(例如不仅 一个 默认)“边缘类型”(或节点类型)以供以后使用?

意思是这样的:

edge [colorscheme=paired12, color=8, fontsize=11, fontname="Arial narrow"];
edge2 [colorscheme=paired12, color=3, fontsize=11, fontname="Arial narrow", style=bold];
edge3 [colorscheme=paired12, color=5, fontsize=14, fontname="Arial narrow"];

node1 -> node2; /* will use the default edge definition from the above */
node2 -> node3 [edgetype=edge2]; /* will use the second edge definition */
node2 -> node4 [edgetype=edge3]; /* and so on... */

以上,ofc,是不正确的 - 仅用于解释......

最佳答案

使用 gvpr很简单,如果你弄清楚基础知识:
input.dot

digraph test {
    node1 -> node2[label="test 1"]; /* will use the default edge definition from the above */
    node2 -> node3 [label="test 2", edgetype="edge2"]; /* will use the second edge definition */
    node2 -> node4 [label="test 3", edgetype="edge3"]; /* and so on... */
}
filter.gvpr
E {
    color="red";
    fontsize=11;
    fontname="Arial narrow"
}
E[edgetype == "edge2"] {
    color="green";
    fontsize=11;
    fontname="Arial narrow";
    style="bold"
}
E[edgetype == "edge3"] {
    color="blue";
    fontsize=14;
    fontname="Arial narrow"
}

用命令
gvpr -c -f filter.gvpr -o output.dot input.dot
将产生 output.dot文件:
digraph test {
    node1 -> node2   [color=red,
        fontname="Arial narrow",
        fontsize=11,
        label="test 1"];
    node2 -> node3   [color=green,
        edgetype=edge2,
        fontname="Arial narrow",
        fontsize=11,
        label="test 2",
        style=bold];
    node2 -> node4   [color=blue,
        edgetype=edge3,
        fontname="Arial narrow",
        fontsize=14,
        label="test 3"];
}

关于graphviz 定义更多 "defaults",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8195642/

相关文章:

python - 在 IPython Notebook 中显示决策树

dictionary - 将 graphviz 绘制为 map

python - 在 Os X 10.5.8 上安装 Graphviz

graphviz - 仅在 graphviz 中显示唯一的边

graphviz - 如何更改 GraphViz 中边缘标签的背景颜色

python - Networkx(或 Graphviz)围绕绘图中心顺时针旋转节点标签

graphviz - 当它们到达同一个节点时,你可以加入边缘吗?

graphviz点: how to insert arrows from a node to center of an arrow

c# - GraphViz 和 ASP.NET

graphviz - 固定节点位置