如何在Graphviz中划掉节点?流程缺失节点标记方法问询
嘿,这个问题我刚好研究过!Graphviz本身没有原生自带的“划掉节点”属性,但有几个超实用的办法能实现你要的、类似Paint里手动划掉的效果,我给你拆解成两种常用场景:
1. 仅划掉节点内的文字(简单快捷)
如果只是想标记节点内容缺失,直接用Graphviz支持的HTML格式标签就行,把节点文字用<s>(或<strike>)包裹,就能实现文字被横线划掉的效果:
digraph ProcessFlow { // 缺失节点:文字带删除线 missing_step [label=< <s>本该存在但缺失的流程节点</s> >, shape=rectangle]; // 正常节点对比 normal_step [label="正常执行的流程节点"]; normal_step -> missing_step; }
要是想更精细控制样式(比如删除线颜色、粗细),还可以用内嵌CSS的<span>标签:
missing_step [label=< <span style="text-decoration: line-through; color: #ff4444;">本该存在但缺失的流程节点</span> >];
2. 给整个节点加斜线划掉效果(还原手动划掉视觉)
如果想要给整个节点框加斜杠,模拟手动划掉的感觉,推荐用「HTML表格+多边形」的组合方案,灵活度拉满:
digraph ProcessFlow { missing_step [ shape=plaintext, label=< <table border="1" cellborder="0" cellpadding="6" bgcolor="#ffffff"> <tr><td>本该存在但缺失的流程节点</td></tr> <!-- 斜杠:points坐标对应节点的对角,可调整stroke属性改样式 --> <polygon points="0,0 120,40" stroke="#ff4444" stroke-width="2" fill="none"/> </table> > ]; normal_step [label="正常执行的流程节点"]; normal_step -> missing_step; }
这里用plaintext节点+HTML表格模拟普通节点的边框,再用<polygon>画斜线。你可以调整points的坐标适配节点大小,修改stroke、stroke-width改变斜线的颜色和粗细。
要是觉得调整坐标麻烦,还可以用「双节点叠加」的方式:一个底层正常节点,上层放一个透明的带斜线的节点(用style=dashed+color=red模拟),然后让两个节点位置重合即可。
这些方法在主流Graphviz版本里都能正常工作,要是遇到兼容性问题,建议升级到最新版哦~
内容的提问来源于stack exchange,提问作者Saaru Lindestøkke
相关产品推荐
相关产品推荐

