默认曲线样式 / splines='ortho' 都会在密集图表上产生断裂的边缘 (上游 graphviz #1415 + #1856)
环境: - `diagrams` 0.25.1 (2025-11-22 当前 PyPI 上的最新版本) - `graphviz` (CLI / `dot`): 任何 2.40 版本或更高版本 - `dot` 的输出 `dot -V`: `dot - graphviz version <填充内容>` - Python 3.11, macOS / Linux (此问题与操作系统无关 - 它存在于 `dot` 的正交路由器中) 最小重现(≤ 25 行): Python from diagrams import Diagram, Cluster from diagrams.k8s.compute import Pod from diagrams.AWS.network import ELB with Diagram( "ortho-fanin-repro", direction="LR", show=False, graph_attr={"splines": "ortho"} ): alb = ELB("alb") with Cluster("ns: ingress"): ingress = Pod("nginx-ingress") with Cluster("ns: orders"): api = Pod("orders-api") worker = Pod("orders-worker") with Cluster("ns: monitoring"): prom = Pod("prometheus") alb >> ingress >> [api, worker] [api, worker] >> prom # fan-in 跨越集群边界 alb >> prom # 跨集群边界 渲染和检查 SVG。 观察到的三个具体缺陷: A. 在集群边界处堆叠的平行箭头。 当 N 边向集群内部的一个节点进行 fan-in( `api`, `worker` -> `prom` ) 时, `splines=ortho` 会在每条平行轨道上绘制一个箭头,并在集群边界处为每条轨道绘制一个单独的箭头,而不是将它们合并。 视觉上: `ns: monitoring` 的虚线集群边界上有多个 ▶ 三角形,指向空白。 实际的节点指针在集群内部绘制。 B. 正交路由直接穿过集群边界而不是绕过它们。 垂直的正交段穿过虚线集群边界和节点图标 - `dot` 的正交路由器不会将子图形框视为障碍。 C. fan-in 堆积; `concentrate` 不与正交路由相关。 多条收敛的边堆叠在同一个目标上,而不是被…
内容来源: mingrammer/diagrams