专栏首页Python工程师敲代码前先构思一下-Graphviz-01

敲代码前先构思一下-Graphviz-01

系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3.2

  • 在写代码前,我相信大家都会先思考一下架构,然后可能是边写边想
  • 这样的缺陷是:某些问题太复杂,想点写点,后期返工或者推倒重来可能性很大
  • 对于个人完成的小项目,个人建议先把逻辑画出来,一个逻辑流程图
  • 相信流程图,常规想到就是微软的VISIO,今天我们介绍个不一样的,Graphviz

Part 1:VISIO对比Graphviz

  1. VISIO基本是手工画,理论上你连蒙娜丽莎都可以画出来,非常耗时,尤其中间有改动,整个图可能都要改动
  2. 因为我们目标更多的是逻辑性,其实对美观要求没那么高,但是要很方便,迭代快,要不等你画好图,
  3. Graphviz其实是对dot语言的渲染,dot语言非常易学,如果要修改图,修改一下代码就可以,重新生成图片就ok

综述:Graphviz非常高效,所想即所得

官网:http://www.graphviz.org/

使用graphviz画图示例1(官网)

使用graphviz画图示例2(官网)

使用graphviz画图示例2-dot代码(官网)

graph G {
 e
 subgraph clusterA {
   a -- b;
   subgraph clusterC {
     C -- D;
   }
 }
 subgraph clusterB {
   d -- f
 }
 d -- D
 e -- clusterB
 clusterC -- clusterB
}

代码截图

Part 2:dot语法

  1. dot有三大对象:线
  2. 对应以上代码,我们来解读一下
    • 首先是以大括号来表示{}一个封闭的关系
    • 第1行:首先定义了一个为G的图(graph)
    • 第2行:节点e(可以先定义,也可以不定义直接使用)
    • 第3行:子图(subgraph),名称为clusterA,子图中所有对象会用一个框进行封闭
    • 第4行:节点a,节点b,并且两者相连接(a — b)
    • 第5行:子图(subgraph),名称为clusterC,相当于子图中的子图
    • 第14行:子图指向子图(clusterC — clusterB)

以上为本次的学习内容,下回见

本文为原创作品,如若转载请标明出处,如发现有错误,欢迎留言指出


本文分享自微信公众号 - Python工程师(DatenSpiel),作者:Z

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-09-04

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【traits-traitsui-基础】-03-控件File

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:JetBrains PyCharm Communi...

    zishendianxia
  • Python-时间及日期-04-时间加减法

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • ​Python-时间及日期-06-获取年周次星期

    系统:Windows 7 语言版本:Anaconda3-4.3.0.1-Windows-x86_64 编辑器:pycharm-community-2016.3....

    zishendianxia
  • day101-支付接口&支付数据结构

    少年包青菜
  • laravel5.1的用户权限管理的实现 原

    修改database/migrations/2016_12_02_070731_create_blogs_table.php文件

    lilugirl
  • 2019年最受企业认可的十大编程语言排行榜

    一种计算机语言让程序员能够准确地定义计算机需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

    老九君
  • React16.7 useEffect初试之setTimeout引发的bug小记

      周末尝试了一下React新的hooks功能,来封装一个组件,遇到一个bug,所以记录一下过程!

    苏南
  • WebRTC 音频采样算法 附完整C++示例代码

    之前有大概介绍了音频采样相关的思路,详情见《简洁明了的插值音频重采样算法例子 (附完整C代码)》。 音频方面的开源项目很多很多。 最知名的莫过于谷歌开源的Web...

    cpuimage
  • 马云:不要买房了,未来房子不值钱!八年后最贵的是这个!

    日前,马云在杭州举行的全球峰会上发表主题演讲说到:未来房子如葱。马云说,过去8年内,中国的房价整体上处于大幅上涨的状态。8年后,中国最便宜的东西可能就是房子。

    Rookie
  • 直方图和密度图

    s = Series(np.random.randn(1000)) plt.hist(s) plt.hist(s,rwidth=0.9)

    慕白

扫码关注云+社区

领取腾讯云代金券