graphviz - 在 Graphviz 中控制簇的位置
问题描述
我有一个 graphiz 项目,我想将集群从左到右水平放置,中间有 cluster_c2(称为 QGIS)。我试图使用这里newrank=true;
描述的方法但没有成功。我的 graphviz 脚本的当前输出是:
我当前的脚本是:
digraph {
node [shape=record, fontname="Arial"];
rankdir=LR;
L [label="Line"]
ML [label="Multi-Line"]
QL [label="Line"]
QML [label = "Multi-Line"]
QCS [label = "Circular-String"]
QCC [label = "Compound-Curve"]
P [label="PolyLine"]
subgraph cluster_c1 {
label = "SpatiaLite";
fontname="Arial";
L;
ML;
}
subgraph cluster_c2 {
label = "QGIS";
fontname="Arial";
QL;
QML;
QCS;
QCC;
}
subgraph cluster_c3 {
label = "Shapefile";
fontname="Arial";
P;
}
L -> QL [dir=both];
QCS -> L [color=grey];
QCS -> ML [color=grey];
QCC -> ML [color=grey];
QML -> ML [dir=both];
QCC -> L [ color=grey];
QML-> L [color=grey];
QL -> ML [color=grey];
QCS -> P;
QCC -> P;
QML -> P [dir=both];
QL -> P ;
}
解决方案
我不知道它是如何工作的,但似乎每个子图的组合newrank="true"
和rank=same
内部都有效:
digraph {
node [shape=record, fontname="Arial"];
newrank=true;
rankdir=LR;
L [label="Line"];
ML [label="Multi-Line"];
QL [label="Line"];
QML [label = "Multi-Line"];
QCS [label = "Circular-String"];
QCC [label = "Compound-Curve"];
P [label="PolyLine"];
subgraph cluster_c1 {
rank=same;
label = "SpatiaLite";
fontname="Arial";
L;
ML;
}
subgraph cluster_c2 {
rank=same;
label = "QGIS";
fontname="Arial";
QL;
QML;
QCS;
QCC;
}
subgraph cluster_c3 {
rank=same;
label = "Shapefile";
fontname="Arial";
P;
}
L -> QL [dir=both];
ML -> QML [dir=both];
QCS -> L [color=grey];
QCS -> ML [color=grey];
QCC -> ML [color=grey];
QCC -> L [ color=grey];
QML-> L [color=grey];
QL -> ML [color=grey];
QCS -> P;
QCC -> P;
QML -> P [dir=both];
QL -> P ;
}
推荐阅读
- java - 在Java中将字符串转换为字符串数组的最快方法
- google-apps-script - 单元格值更改为 setValue 未被 getDataRange().getValues() 识别
- python - 当字符串中有小括号时,如何使用正则表达式匹配字符串?
- google-apps-script - 检查工作表名称并选择有效的工作表名称
- java - 如何在 Hibernate 中级联更新到子实体
- c# - C# - 获取 Math.Pow 函数的倒数基数
- flutter - Flutter从没有键的json数组生成类
- angular - 如何在ckeditor中动态创建角度自定义元素?
- regex - Linux CLI grep 模式匹配多行注释
- excel - SUMIF 函数多次引用