You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Graphviz/Dot渲染带上下文本的水平拆分圆形节点?

实现水平拆分的圆形节点(含上下文本)

Graphviz本身没有原生的“拆分圆形”形状,但可以通过HTML节点内容+圆形形状的组合来实现你要的效果,完美替代record式圆形节点。

方法1:HTML表格配合circle形状

直接给节点设置shape=circle,用HTML的<table>结构实现上下文本拆分,中间加分隔线,代码示例:

digraph G {
    node [shape=circle, style=filled, fillcolor=white]
    split_circle [label=<
        <TABLE BORDER="0" CELLBORDER="1" CELLSPACING="0" WIDTH="100">
            <TR><TD>上半部分文本</TD></TR>
            <TR><TD BORDERTOP="1">下半部分文本</TD></TR>
        </TABLE>
    >]
}
  • 用TABLE的两个单元格承载上下文本,通过BORDERTOP="1"给下方单元格添加顶部边框,模拟水平拆分线
  • shape=circle会强制节点保持圆形,HTML内容会自适应填充到圆形内部
  • 可通过调整WIDTH控制圆形大小,或fontsize调整文本尺寸

方法2:自定义分隔线样式(更灵活)

如果需要调整分隔线的颜色、粗细,可改用独立单元格作为分隔线:

digraph G {
    node [shape=circle, style=filled, fillcolor=#f0f8ff]
    custom_split [label=<
        <TABLE BORDER="0" CELLBORDER="0" CELLSPACING="0" WIDTH="120">
            <TR><TD ALIGN="CENTER" HEIGHT="50">第一行内容</TD></TR>
            <TR><TD BGCOLOR="black" HEIGHT="1"></TD></TR> <!-- 黑色细分隔线 -->
            <TR><TD ALIGN="CENTER" HEIGHT="50">第二行内容</TD></TR>
        </TABLE>
    >]
}

这种方式能精准控制分隔线的样式,比单元格边框更灵活。

为什么你之前的尝试没成功?

  • Mrecord本质是圆角矩形,其布局逻辑基于矩形,即使调大圆角参数也无法完全变成圆形
  • Mcircle是用于多端口的圆形节点,设计目的不是拆分文本内容,不符合需求

内容的提问来源于stack exchange,提问作者Jonas Mechtheim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 23:31:25