零基础学编程029:程序员作图不用笔

时间:2022-05-03
本文章向大家介绍零基础学编程029:程序员作图不用笔,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

现在写专业文章离不开图,有些图非常复杂但非常有规律,用PowerPoint或Visio画都很吃力,这时候会编程就轻松多了,比如下面这张状态转换图:

再比如这张数据结构图:

再比如英文小说《欺骗的女儿》中的人物关系图:

再比如这张超复杂的网络结点图:

有些图看起来简单,可能用PowerPoint画也费不了多少时间,但如果这种图需要频繁调整,那工作量可就大了去了。比如程序员经常画的流程图、类图、数据结构图等,公司里经常画的组织结构图、工作流图等。

对于这类非常有规律的图,还有一个强大的工具,它就是GraphViz。上面举的几个例图都是摘自它的官网:http://www.graphviz.org。这个GraphViz不仅仅是一个工具,而且还对应了一种画图的语言,称为DOT Language

安装与运行

到官网上点击Download链接,可以看到各种平台的下载安装包,支持Linux、Windows、Mac,我下载的是Windows平台的graphviz-2.38.msi安装包,安装过程一路默认下一步即可。完成之后,从开始菜单中找到gvedit.exe,运行它出现主界面。

Hello World

任何语言都有个Hello World,DOT Language也不例外。从File菜单中点击New,会新建一个子窗口,名称为graph1.gv,所有GraphViz的文件的扩展名都为.gv,刚才的gvEdit.exe的意思也明白了吧?

在文本编辑窗口中输入以下代码:

digraph G {
    hello -> world
}

再点击Graph菜单中的Layout,或者直接按F5键,弹出一个View窗口,一张简单的图就画出来了。

简单解释一下:

  • digraph表示有向图,是Directed Graph的缩写形式,什么是有向图?请参考《图论》
  • G是图的名称
  • 花括号{ }内是图形的描述语句
  • hello 和 world是两个节点node
  • -> 表示左边指向右边的一个边edge

类与对象图

在《零基础学编程028:面向对象编程OOP》里我画了一张图,实际上就是用GraphViz生成的。

图并不复杂,直接看代码:

digraph G {
    node[shape=box]
    Stock[style=filled]
    Stock -> {google; amazon; facebook; apple}
}

花括号内的代码就三行,记得按F5看看运行效果,解释一下:

  • node[ ... ]表示对图中的所有结点统一进行设置
  • [ ] 中设置一些属性,称为attr
  • shape=box把结点设置为矩形
  • Stock是结点的名称,由于前面已经设置了shape=box,所以也为矩形
  • stype=filled,填充的矩形
  • Stock -> {google; amazon; facebook; apple}相当于以下四句 Stock -> google Stock -> amazon Stock -> facebook Stock -> apple

小结:

  • GraphViz的语法挺简单,里面主要是结点node边edge
  • -> 表示一条有向边
  • 最复杂的是Attr,里面可以设置填充、排列、颜色、链接等等,详细内容以后再说,也可以参考官网的Documentation链接,长达N页的全英文详细说明,点击“阅读原文”慢慢看吧

--- END ---