如何为DOT生成的节点添加自定义属性?SVG未显示tag等属性
让Graphviz DOT自定义属性出现在SVG的标签中
Graphviz默认只会将内置属性(如label、shape等)渲染到SVG输出里,用户自定义的tag、ID、status、data这类属性不会自动添加到<g>标签中,需要显式配置让Graphviz保留这些属性,有两种可行方案:
方案1:命令行参数指定输出属性
调用dot命令时,使用--attr-output参数列出需要保留的自定义属性,多个属性用逗号分隔:
dot -Tsvg --attr-output=tag,ID,status,data input.dot -o output.svg
执行后生成的SVG文件中,每个节点对应的<g>标签就会带上你定义的自定义属性及对应值。
方案2:DOT文件内全局配置输出属性
如果想在DOT文件中直接定义输出规则,可在图级别添加outputattrs属性,指定要保留的自定义属性:
digraph example { // 全局声明要输出的自定义属性 outputattrs = "tag,ID,status,data"; // 定义带自定义属性的节点 node [shape=rect, label="*Bold Text* _Italic Text_"]; user_node [tag="user", ID="u_123", status="active", data="{'username':'juan'}"]; post_node [tag="post", ID="p_456", status="draft", data="{'content':'Graphviz tips'}"]; user_node -> post_node; }
之后正常执行dot -Tsvg example.dot -o output.svg即可,生成的SVG会包含指定的自定义属性。
注意事项
- 属性名称区分大小写,要和你在DOT节点中定义的完全一致(比如
ID不能写成id) - 如果属性值包含引号、逗号等特殊字符,需要用双引号包裹并转义内部引号
- 该方法仅适用于SVG输出格式,其他输出类型可能不支持自定义属性导出
内容的提问来源于stack exchange,提问作者Juan Carlos Oropeza
相关产品推荐
相关产品推荐

