graphviz - 使用graphviz在像kcachegrind这样的标签中创建百分比条
问题描述
我正在尝试使用 graphviz 创建一个类似于 kcachegrind 的调用图。参见例如,
我想我可以使用一个表格来创建百分比栏,其中一行使用两个单元格,设置它们的大小和背景颜色。这种工作方式,除了默认情况下它将使栏与最宽的列(函数标签)一样宽。如果我添加fixedsize="TRUE"
单元格得到预期的宽度,但现在在单元格之间插入空间以使总宽度仍然等于总表格宽度。我也尝试过嵌套表,但这似乎给出了相同的结果。 cellspacing(0)
似乎只影响垂直间距。
我查看了 kcachegrind 源代码。他们似乎只是保留一条线并自己做百分比条(解析点布局信息并直接在画布上绘制节点)。这表明在 graphviz 中可能无法做到这一点。我可以选择的相关解决方案是对 SVG 进行后处理,但这看起来很丑……
解决方案
您可以在单元格的属性中使用colorListbgcolor
来模仿进度条。
例子:
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>
>
]
}
结果:
推荐阅读
- c# - 无法使用 IDistributedCache 缓存 AuthenticateResult 条目
- linux - 汇编程序如何初始化包含位置无关的其他变量地址的变量?
- django - 在 Django rest api 中评论序列化
- java - 为什么我无法单击 Jmeter 中的打开图标?
- c++ - 外部 C++ 类以避免包含其头文件
- jquery - 当 div 在 bootstrap 手风琴中折叠时添加和删除边框底部颜色
- javascript - 如何使用 JavaScript 中的循环从数组中删除多个特定元素?
- react-redux - 如何访问包含相同名称的 Redux store 的一部分?
- angular - 在 Angular 中使用响应式表单动态创建 FormControl
- conventions - 在哪里实现更新过期逻辑:数据层或服务层或