如何在Python diagrams中实现水平集群无可见边的节点可视化
解决Diagrams集群内节点水平排列且无边的问题
有两种可靠的方法可以实现你的需求:
方法1:添加隐藏边
通过创建一条样式为隐藏的边,既可以让Graphviz将节点水平排列,又不会显示出连接线。代码示例如下:
from diagrams import Cluster, Diagram, Edge from diagrams.onprem.client import User with Diagram("sample", show=False) as diag: with Cluster("sample horizontal cluster without edge"): node1 = User("Some Node") node2 = User("Some other Node") # 用Edge设置style="invis"创建隐藏边 node1 >> Edge(style="invis") >> node2
原理:Graphviz依赖边关系确定节点布局,隐藏边仅参与布局计算,不会在最终图中渲染出来。
方法2:强制节点同层级排列
利用Graphviz的rank=same属性,直接指定多个节点处于同一水平层级,无需依赖边关系。代码示例:
from diagrams import Cluster, Diagram from diagrams.onprem.client import User from diagrams.graphviz import Raw with Diagram("sample", show=False) as diag: with Cluster("sample horizontal cluster without edge", graph_attr={"rankdir": "LR"}): node1 = User("Some Node") node2 = User("Some other Node") # 插入Raw Graphviz语句,强制两个节点同层级 Raw('{rank=same; "Some Node"; "Some other Node";}')
注意:这里的节点名称要和User的label完全一致,否则Graphviz无法识别对应节点。
内容的提问来源于stack exchange,提问作者Joey Baruch
相关产品推荐
相关产品推荐

