使用 graphviz 在 kcachegrind 等标签中创建百分比条
Create percentage bar in label like kcachegrind using graphviz
我正在尝试使用 graphviz 创建类似于 kcachegrind 的调用图。参见例如
我想我可以使用 table 创建百分比栏,一行使用两个单元格,设置它们的大小和背景颜色。这种工作方式,除了默认情况下它会使条形图与最宽的列(函数标签)一样宽。如果我添加 fixedsize="TRUE"
单元格获得预期的宽度,但现在 space 插入单元格之间以使总宽度仍然等于总 table 宽度。我也试过嵌套 tables,但这似乎给出了相同的结果。 cellspacing(0)
似乎只影响垂直间距。
我查看了 kcachegrind 源代码。他们似乎只是保留一条线并自己做百分比条(解析点布局信息并直接在 canvas 上绘制节点)。这表明它可能无法在 graphviz 中执行此操作。我可以选择的相关解决方案是 post-process
SVG,但这看起来很丑......
可以在单元格的bgcolor
属性中使用colorList来模拟进度条。
示例:
digraph {
example1 [
shape=plain
label=<
<table cellborder="0" cellspacing="5">
<tr><td colspan="2">Title</td></tr>
<tr><td border="1" width="50" bgcolor="#6da8ce;0.25:white"></td><td color="white">25%</td></tr>
</table>
>
]
example2 [
shape=plain
label=<
<table cellborder="0" cellspacing="5">
<tr><td colspan="2">Title</td></tr>
<tr><td border="1" width="50" bgcolor="#6da8ce;0.71:white"></td><td color="white">71%</td></tr>
</table>
>
]
}
结果:
我正在尝试使用 graphviz 创建类似于 kcachegrind 的调用图。参见例如
我想我可以使用 table 创建百分比栏,一行使用两个单元格,设置它们的大小和背景颜色。这种工作方式,除了默认情况下它会使条形图与最宽的列(函数标签)一样宽。如果我添加 fixedsize="TRUE"
单元格获得预期的宽度,但现在 space 插入单元格之间以使总宽度仍然等于总 table 宽度。我也试过嵌套 tables,但这似乎给出了相同的结果。 cellspacing(0)
似乎只影响垂直间距。
我查看了 kcachegrind 源代码。他们似乎只是保留一条线并自己做百分比条(解析点布局信息并直接在 canvas 上绘制节点)。这表明它可能无法在 graphviz 中执行此操作。我可以选择的相关解决方案是 post-process SVG,但这看起来很丑......
可以在单元格的bgcolor
属性中使用colorList来模拟进度条。
示例:
digraph {
example1 [
shape=plain
label=<
<table cellborder="0" cellspacing="5">
<tr><td colspan="2">Title</td></tr>
<tr><td border="1" width="50" bgcolor="#6da8ce;0.25:white"></td><td color="white">25%</td></tr>
</table>
>
]
example2 [
shape=plain
label=<
<table cellborder="0" cellspacing="5">
<tr><td colspan="2">Title</td></tr>
<tr><td border="1" width="50" bgcolor="#6da8ce;0.71:white"></td><td color="white">71%</td></tr>
</table>
>
]
}
结果: