本文涉及的工具

  • Graphviz(官网)
  • Pygraphviz(安装Pygraphviz的正确姿势)
  • networkx(pip install networkx)
import networkx as nx
G1 = nx.MultiDiGraph()
node = ['A', 'B', 'C', 'D', 'E']
edge = [('A', 'B'), ('B', 'C'), ('C', 'D'),('C', 'E')]
for i in node:G1.add_node(i)
for i in edge:G1.add_edge(i[0], i[1])
G1.graph['edge'] = {'arrowsize': '0.5'} # 箭头大小
G1.graph['node'] = {'shape':'box'} # 节点形状
G1.graph['graph'] = {'splines': 'spline', 'rankdir':'LR'} # 线型与布局方向
A = to_agraph(G1)
A.layout('dot') # 布局方法
A.draw('./graph/test2.png')

1.修改节点边框颜色

G.add_node(node, color="red")

2. 修改节点背景颜色

G1.add_node(i, style='filled')
G1.graph['node'] = {'shape':'box', 'color':'red'}

3.中文乱码

在上述图中增加一个中文节点,发现中文无法正常显示
解决方法,在节点属性中添加指定中文字体,即可正常显示

G1.graph['node'] = {'shape':'box', 'color':'red', 'fontname':'FangSong'}

4. 其他节点与边属性

节点形状(shape),节点的高度宽度或半径(width,height),边的长度(len),边的线形(spline),箭头大小(arrowsize),箭头方向(dir)等等,每个属性内部的内容详见Graphviz官网

5. 图形布局要点

  • Graphviz使用自动排版,提供了多种布局引擎,个人比较喜欢dot和neato排版,如果节点较多且节点标签文字比较长的话建议使用dot排版,否则neato排版更紧凑些,如下图所示。

  • 当使用dot排版时,不建议使用curved曲线,因为该线形会穿过节点,影响美观性,建议使用spline样条线以及ortho正交线。下图展示了使用dot排版和curved曲线,可以看到部分曲线穿过了节点(为了隐去部分敏感数据信息,将中文字体使用乱码掩盖)

  • 当画图时发现布局较难看的时候,可以尝试给边添加标签和权重,通过添加标签会对线条布局机制产生一定的影响,而权重则影响边的长度,权重越大的边,越短且越直。下面通过一个案例说明添加标签与权重对布局的影响。

  1. 第一幅图为使用dot布局机制和spline样条线,未添加标签和权重时的结果,可以看到左侧存在一条较粗的线对图片的美观程度产生较大影响。

  2. 添加标签,可以看到布局发生了调整,第一幅中左侧较粗的线现在调整到了图的中部

  3. 添加权重,那根较粗的线变成了垂直的线,图结构更加清晰,布局美观

networkx使用Graphviz画图要点相关推荐

  1. networkx —— 基本操作及画图

    这几天在用networkx,官方文档是这个,很全也很详细,这里简单记录一些简单的用法和使用过程中的菜鸡看法. 这篇主要记一下networkx基本图创建和如何画图. 环境 Python 3.6.3 ne ...

  2. graphviz画图软件介绍及使用感受

    1 介绍 一次偶然的机会接触到了画图软件graphviz,它主要用于画有向图.<数据结构>课程里的数据结构图等比较方便.它与tikz的比较为: tikz可以画任何种类的图.因为tikz就相 ...

  3. graphviz画图之张柏芝前夫是谢霆锋

    张柏芝前夫是谢霆锋,谢霆锋前女友是王菲,王菲老公是李亚鹏,李亚鹏前女友叫瞿颖,瞿颖现男友是张亚东,朴树有个前女友叫周迅,周迅有个前男友叫李亚鹏,王菲前夫是窦唯,窦唯有个堂弟叫窦鹏,窦鹏有个前女友叫周迅 ...

  4. 关于python中Graphviz画图时报错的解决方法

    软件要安装好,软件下载地址 系统环境要配置好,bin文件夹和dot.exe文件都要配置到环境变量里面 pip install graphviz tree.export_graphviz里面的out_f ...

  5. Python-matplotlib画图要点【大总结】

    文章目录 一.x,y坐标图 1.基本操作 2.进阶操作 (1)解决中文乱码情况 (2)调整图像大小 (3)加标题.坐标文字.坐标轴标签 (5)去掉上边框 二.柱状图 1.柱状图画图基本操作 2.柱状图 ...

  6. python graphviz画图

    文章目录 今日心得 graphviz安装与配置 dot和graphviz dot graphviz 作图 step1:导入graphviz库 step:创建一个表 添加点 点之间创建边 输出画的图 生 ...

  7. graphviz画图

    1 2 3 4 5

  8. Graphviz解决图论简单画图

    Graphviz解决最简单图论画图 参考文章:十分钟学会graphviz画图-简书 这里给出最最最最常用且简单的说明 1.安装 1.1下载 假设你是windows用户,那么你可以从这个网站获得最简单最 ...

  9. Graphviz使用

    官方文档: http://www.graphviz.org graphviz是贝尔实验室开发的一个开源的工具包,它使用一个特定的DSL(领域特定语言):dot作为脚本语言,然后使用布局引擎来解析此脚本 ...

最新文章

  1. 小白都能看懂的神经网络教程:从原理到优化如此简单
  2. jupyter配置默认启动目录
  3. selenium 测试
  4. iOS-获取通讯录联系人信息
  5. 二分图 crf的军训
  6. 在Dialog中实现下拉框效果并对下拉框赋自定义的值
  7. OpenGL键盘消息实例
  8. [课程复习] 数据结构之经典题目回顾 (一)选择题、填空题1
  9. calcite连接mysql_使用Calcite做Sql语法解析
  10. Arduino笔记-呼吸流水灯
  11. js ---- 数组操作
  12. VS2012 professional和VS2012 Ultimate的区别
  13. 职高计算机专业c语言_重庆市职业高中计算机专业C语言试题
  14. 无人驾驶汽车系统入门(十六)——最短路径搜索之A*算法
  15. JavaScript中defer的作用
  16. 四周型文字环绕怎么设置_word艺术字四周型环绕怎么设置
  17. arduino编码器计数_ARDUINO旋转编码器
  18. Docker:overlay2浅析
  19. 交友项目【查询好友动态,查询推荐动态】实现
  20. 《惢客创业日记》2018.12.12(周三)创业者从0到1的10个阶段(三)

热门文章

  1. 宝鲲财经:外汇操作技巧浅析
  2. 年货都买些什么?年货清单列表用便签记下来
  3. 如何由密度函数求分布函数
  4. endnote导入参考文献期刊名不能显示解决办法
  5. YouTube排名第一的英文演讲《Dream》
  6. 计蒜客 2020 蓝桥杯大学 B 组省赛模拟赛(一)
  7. 深入理解gRPC(一):gRPC介绍
  8. 如何画出干净流畅的手绘线稿,把握好这些技巧对你很有帮助!
  9. GVS广州建博会全回顾:有料,有得聊
  10. 车联网技术 应用冷链物流分析文档