Graphviz 排版思路 Graphviz 如何控制节点位置

24 篇文章 0 订阅
订阅专栏

有个画图需求是需要生成特定排版的关系图。

graphviz 对于一般情况都是自动排的,有时候会抽风,比如这种情况:

而我们想要这样:

对初学者提一下 ,如何实现 3  2 5 ,1467 从左到右排列呢?待会会顺便讲解这个的实现方法。

可以看到 3 就是不能在 2 的左边 。而代码中加入了限制:

    subgraph {
        rankdir = LR;
        rank = same;
        
        s3 -> s2 [style = invis;];
        s2 -> s5 [style = invis;];
    }
    

这里 invis 边就是用来控制位置用的。因此我们继续加入一些限制来吧这个 3 移动回到 2 的左边。

    subgraph {
        s1 -> s4 [style = invis;];
        s4 -> s6 [style = invis;];
        s6 -> s7 [style = invis;];
        s1 -> start [style = invis;];
    }
    subgraph {
        rankdir = LR;
        rank = same;
        
        start [style = invis;];
        start -> s3 [style = invis;];
        s3 -> s2 [style = invis;];
        s3 -> s5 [style = invis;];
    }

原理是通过添加额外的节点和边(仅用于排版,输出时隐藏)以及 rank 限制条件,来控制生成节点尽量满足需要的排版。不过这个实际和算法执行起来算出来的效果有关。

上图中框起来的是  invis 边。

下面进行讲解:

红色橙色:为了限制节点的顺序是水平的 3 2 5 排序摆放。1 4 6 7 水平顺序摆放,否则会错乱,graphviz 会自己想怎么排就怎么拍(设置 rankdir = LR 能生效的前提是他们节点之间有有向边!

绿色:为了把 3 从 graphviz 糟糕算法生成的右边拉回到左边,至于为什么会这样,其实和 graphviz 用的算法和选择策略有关,可以参照Graphviz中的资料,实际就是算法因为是比较通用的,在这个 case 下,算法恰好生成的时候认为 3 再右边更加的均匀。

实际效率需求的生产中,我们还是用 GUI 工具吧,这种除了要通过代码生成的情景或者大量的数据下之外,比如这种需要对特定节点特定边的位置进行控制的,没有太大必要去用脚本工具画图。。

附录,完整代码:

digraph b {
    overlap = false;
    splines = true;
    
    s8 [label = 8;group = g1;];
    
    s2 [label = 3;group = g2;];
    s3 [label = 2;group = g2;];
    s5 [label = 5;group = g2;];
    
    s1 [label = 1;group = g3;];
    s4 [label = 4;group = g3;];
    s6 [label = 6;group = g3;];
    s7 [label = 7;group = g3;];
    
    
    
    s8 -> s3 [dir = back;];
    s1 -> s3;
    s3 -> s6 [dir = back;];
    s4 -> s3;
    s7 -> s3;
    
    s2 -> s3;
    s3 -> s2;
    s3 -> s5;
    s5 -> s3;
    
    
    subgraph a {
        rankdir = TB;
        rank = same;
        s2;
        s3;
        s5;
    }
    
    subgraph {
        s1 -> s4 [style = invis;];
        s4 -> s6 [style = invis;];
        s6 -> s7 [style = invis;];
        s1 -> start [style = invis;];
    }
    subgraph {
        rankdir = LR;
        rank = same;
        
        start [style = invis;];
        start -> s2 [style = invis;];
        s2 -> s3 [style = invis;];
        s3 -> s5 [style = invis;];
    }
    
    
    subgraph c {
        rankdir = TB;
        rank = same;
        s1;
        s4;
        s6;
        s7;
    }
    subgraph d {
        rank = same;
        s8;
    }
    rank = same;
}

python中如何让图形出现在指定位置_python中graphviz中的图形节点位置
weixin_39866087的博客
11-25 1011
我一直在寻找一段时间来在python中的graphviz中指定图形中的节点位置.我在dot中找到了一个子图的rank command,这是我正在寻找的,但是我找不到在python中将graphgraph中的子图和等级组合起来的方法.我也试图强制节点位置,但也没有工作.我创建了一个我想要实现的简单示例.这是我的代码:from graphviz import Digraphtop_nodes = ['...
d3-graphviz:Graphviz DOT渲染和使用D3的动画过渡
05-02
d3-graphviz 使用的端口从语言描述的图形中渲染SVG,并在图形之间进行动画过渡。 特征 从源渲染SVG图 一个图到另一个图的动画过渡 边缘路径补间 节点形状补间 进入和退出节点和边缘的淡入和淡出 进入边缘的动画式...
【Python】流程图神器PygraphViz详解
fengdu78的博客
07-14 1204
最近在做新的课程《风控策略自动化挖掘》,过程中要用到流程图,发现一个很好用的库pygraphviz,非常好用,我也只是探索了部分功能,这里分享给大家。一、导入模块import pygraphviz as pgv二、创建图形G = pgv.AGraph(directed=True, strict=False, nodesep=0, ranksep=1.2, rankdir="TB", ...
graphviz画图
横行青海夜带刀
07-26 186
前言 关于graphviz的介绍,我前面已经有专门的一篇文章了:http://abruzzi.iteye.com/blog/429042  ,还没有接触过的可以去看一看。   基本概念 计算机科学中的数据结构中,图算是最为复杂的一种数据结构了,图G由顶点(vertex),以及连接这些顶点的边(edge)组成,表示为G(V,E),其中V表示顶点的集合,E表示边的集合。图有着非常广阔的应...
我如何使用 Graphviz 来优化我的模型图的布局,,python 人工智能 深度神经网络,
最新发布
08-26 791
命令不可用,你可能需要将 Graphviz 的安装目录添加到系统的 PATH 环境变量中。如果你在安装或配置 Graphviz 时遇到问题,可以参考之前的回答来解决。),你可以使用 Graphviz 的 Python 绑定来显示或保存这个图。如果你想要在生成后立即查看图片,可以将其设置为。请注意,确保你的环境中已经安装了 Graphviz,并且。你可以指定不同的格式,如。在 Python 中,如果你已经使用 Pyro 的。: 如果你想要在命令行中使用 Graphviz 的。是你想要生成的图片文件的名称。
GraphViz DOT有向图 (四)node节点布局控制之rank,group,subgraph
热门推荐
杜绝996的web开发man
08-04 1万+
内容
graphviz_布局引擎_渲染器_格式化器的区别
浪漫韫秋
04-05 400
布局引擎输入:布局引擎的输入是DOT文件描述,这是一种使用DOT语言编写的脚本,描述了图形中的节点、边以及它们的属性。输出:布局引擎的输出是位置数据。它根据DOT文件描述和图的结构,使用特定的算法来计算每个节点在画布上的位置以及边的路径,并生成相应的位置数据。渲染器输入:渲染器的输入是布局引擎生成的位置数据,以及可能还包括一些图形样式和属性的信息。输出:渲染器的输出是图形数据。它根据位置数据和样式信息,将节点和边绘制成具体的图形表示,生成图形数据。格式化器输入:格式化器的输入是渲染器生成的图形数据。
Graphviz中文教程指南
10-28
graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本,并完成自动布局。此文档为Graphviz中文教程,转载请注明出处,仅供个人学习交流,不供商业用途!
使用graphviz绘制流程图
zzz_781111的专栏
06-07 1万+
日常的开发工作中,为代码添加注释是代码可维护性的一个重要方面,但是仅仅提供注释是不够的,特别是当系统功能越来越复杂,涉及到的模块越来越多的时候,仅仅靠代码就很难从宏观的层次去理解。因此我们需要图例的支持,图例不仅仅包含功能之间的交互,也可以包含复杂的数据结构的示意图,数据流向等。 但是,常用的UML建模工具,如VISIO等都略显复杂,且体积庞大。对于开发人员,特别是后台开发人员来说,命令
十分钟学会graphviz画图
longgb123的博客
01-28 1571
一认识graphviz 二安装graphviz 三使用graphviz 1 基本信息 2 基本使用 3 高级使用 四常见问题 1 编译问题 2 中文问题 一、认识graphviz 接触graphviz是几年前的一个项目,要画出数据网络的布局,使用graphviz能比较清楚的画出数据之间的关系。 可以在gallery中查看他能完成的图形:http://www.graphviz
graphviz 布局和子图,表格教程
a50295866的博客
06-08 1722
有了这三个利器,就搞定架构图了. 子图间互相调用要开启 http://graphviz.org/pdf/dotguide.pdf 转载于:https://www.cnblogs.com/fei33423/p/6959910.html
windows-graphviz-2.38.zip
11-21
1. **自动布局算法**:Graphviz提供了多种自动布局算法,如Dot、Neato、Fdp、Sfdp、Gephi等,可以根据不同类型的图自动调整节点位置,使得图形清晰、美观。 2. **丰富的图形格式支持**:它可以生成SVG、PDF、PNG...
解决Cannot find Graphviz
01-10
一般来说,这个路径可能是`C:\Program Files\Graphviz\bin`,但具体路径取决于用户的安装位置。 此外,文件列表中还有两个URL链接,一个是关于在IntelliJ IDEA中安装和使用PlantUML的简书文章,另一个是Graphviz的...
graphviz-2.38_graphviz-2.38_决策树_graphviz_
10-03
Graphviz是一款强大的开源图形可视化工具,它被广泛用于绘制各种图表,包括复杂的网络图、流程图、层次结构图等。在机器学习领域,特别是在决策树算法的理解和展示中,Graphviz发挥着至关重要的作用。标题提到的...
dgr:按其边缘指定的顺序对Graphviz有向图节点进行排序
03-15
dgr 有向图的缩写。 采取DOT格式的digraph ,其中依赖项表示为dependent -> dependency ,确定它们发生的顺序,... 通过运行terragrunt graph-dependencies ,您可以使用Graphviz(DOT)数据,如下所示: digraph {
Graphviz入门
czw
12-07 2325
Graphviz入门安装Graphviz在官网上面下载相关文件,地址:http://www.graphviz.org/download/。graphviz简介graphviz是贝尔实验室设计的一个开源的画图工具,它的强大主要体现在“所思即所得”(WYTIWYG,what you think is what you get),这是和office的“所见即所得“(WYSIWYG,what you see
排版问题算法
yanxiaoqi931的博客
07-06 1176
排版问题算法的基本思路:将排版转化为一个二维char数组或者int数组,挖掘所给要求中存在的二维数组内部的数学、逻辑关系,并用代码表示出来。 这里采用的代码如下: /*画图问题——叠框*/ #include <iostream> #include <stdio.h> #include <algorithm> using namespace std; int main() { int len;char B;char A; while(scanf("%d
java用dot graphviz,带Dot / GraphViz的族谱布局
weixin_29466397的博客
03-01 213
I am trying to draw a family tree with Dot and GraphViz.This is what I currently have:# just graph set-updigraph simpsons {ratio = "auto"mincross = 2.0# draw some nodes"Abraham" [shape=box, regular=...
在程序内部使用winGraphviz进行图形自动布局
weixin_30780649的博客
02-20 191
winGraphviz支持內部圖形形狀進行佈局圖輸出。當然,在我們程序內部並不需要這樣的一個圖,因為我們的圖可能需要其它的繪製元素,而且我們還會在圖形上進行拖動、放大、縮小等功能,一張簡單的佈局圖是不符合我們的要求的。 幸好winGraphviz支持佈局格局的輸出,牠可以告訴我們每一個具體的圖形的位置,每一條連線的位置,只要我們獲取到該位置,即可以用該位置進行設置我們內部的圖形的位置了,這...
linux系统查找Graphviz位置
05-25
你可以使用以下命令来查找Graphviz位置: ``` which dot ``` 这将返回Graphviz中的dot可执行文件的位置。如果Graphviz未正确安装,则该命令将不会返回任何内容。
写文章

热门文章

  • 在Windows 10 中用 Bash on Windows(WSL) 给 VSCode 搭建 编译调试 C/C++ 环境 (本文已过时) 16655
  • 多人网络游戏服务器开发基础学习笔记 II: 帧同步 | 游戏客户端预测原理分析 | FPS 游戏状态同步 11319
  • 游戏开发基础笔记:逻辑帧和物理帧辨析 | Gameloop | 游戏循环 10429
  • io_uring 使用教程| io_uring 完全指南 | io_uring 实践指导 | io_uring 资料参考 9142
  • 我退出了编程世界 7841

分类专栏

  • 编译原理基础 2篇
  • 胡乱思考 8篇
  • 深度学习 1篇
  • 理解性笔记 22篇
  • 老记忆 2篇
  • 翻译 1篇
  • coroutine+io_uring 17篇
  • 网络编程 29篇
  • 操作系统/数据库 19篇
  • 图形学 8篇
  • 分布式系统 3篇
  • 游戏开发 4篇
  • 计算机网络 10篇
  • C++ 12篇
  • 编程语言 3篇
  • 摘要性笔记 24篇
  • 概述性笔记 8篇
  • 计算机组成原理 1篇
  • CS61B 3篇
  • 刷题 6篇
  • 高级数据结构 4篇
  • 开发环境 4篇
  • 前端
  • 6.S081 3篇
  • 笔记 21篇

最新评论

  • 我退出了编程世界

    rockyou666: 原文呢?

  • 我退出了编程世界

    Xiaoyu___Wang: 这不是一篇翻译吗。。。。

  • 我退出了编程世界

    追逐203: 老哥怎么了

  • 我退出了编程世界

    还是岗哥: 玛莎、比尔、柯莱特,这都谁啊?

  • CS61B project 2 示例图的地牢地图房间走廊地图生成洞穴地图生成方法

    RzBu11d023r: 这种问题没啥意义,下载个 snipaste或者pixpin屏幕取色吧,比留言问快多了/😂。表情包

大家在看

  • 【Spring MVC】创建项目和建立请求连接
  • Moectf-week1-wp
  • 推荐一款功能强大的智能语言交互软件:豆包桌面客户端
  • 编程语言大小写敏感有规则吗?续行符可以忽略空格吗?为什么注释不能在字符或者字符串中?
  • IEC104规约的秘密之十五----文件传输慢的原因 2

最新文章

  • 我退出了编程世界
  • 深度学习知识速成 I 深度学习工具链名词解释 深度学习原理
  • “ 奋斗者耕耘论坛 ” 商业计划书 | 内卷 | 大学生创业计划书 | 大创 | 创新杯项目 | 如何财富自由 | 怎么发财 | 赚钱方法
2023年1篇
2022年38篇
2021年53篇
2019年1篇
2017年1篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢花盆哪里有在卖北京玻璃钢雕塑商家潍坊玻璃钢雕塑全国接单玻璃钢雕塑的制作方法湖南酒店艺术玻璃钢雕塑价格焦作公园景观玻璃钢景观雕塑公司信阳玻璃钢浮雕动物雕塑南阳标识玻璃钢仿铜雕塑公司商场美陈计法差异上海户外玻璃钢雕塑制作河源玻璃钢座椅雕塑黄山玻璃钢雕塑人物定制佛山玻璃钢雕塑品夏邑制作玻璃钢雕塑商家遵义商场美陈装饰桐乡玻璃钢雕塑咨询广东玻璃钢卡通人物雕塑厂家玻璃钢卡通雕塑价格合理公园玻璃钢仿铜雕塑小品玻璃钢手雕塑图片唐山玻璃钢雕塑定做临汾玻璃钢仿真水果雕塑定制吕梁玻璃钢造型雕塑美陈商场潮流年轻元素商场美陈才用什么主题现代玻璃钢卡通雕塑需要几天园林景观玻璃钢彩绘雕塑厂宜春户内玻璃钢雕塑销售电话玻璃钢彩绘动物雕塑制作金昌人物玻璃钢雕塑多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化