关于linux:程序员轻松绘图神器

2次阅读

共计 2931 个字符,预计需要花费 8 分钟才能阅读完成。

咱们程序员在工作生存中,有很多场合下须要绘制图表,比方 PPT 里的图表,学习笔记的一些助记图,还有最常见的,工作中大量应用的流程图。

在 Window 下,咱们有很多好用的工具,比方 VisioEA 等等。这些软件也很好用,但都有个毛病,那就是太简单。咱们须要肯定的美工根底,还要学很多软件操作,能力画出一张很简略的流程图。

而且,更要命的是,一旦需要产生变动,很不好批改,往往牵一发而动全身。所以常常在听到需要变更的时候,良许就脊背一凉……

起初,在大神的介绍下,良许开始应用一个神器。这个神器不须要你懂美工,也不太须要懂软件操作,绘图的过程跟你写软件的过程差不多,短短的几行代码,就能把你头脑里的想法体现进去。

而且,不必放心布局,不必放心批改,甚至都不必鼠标,也给制作出相当精美的作品!

这个神器就是:dot 命令!

这个神器还有个图形界面版,叫 Graphviz,但良许习惯了命令行,个别是在命令行下实现的。

咱们先来看下它能做什么。以下几个图片选自它的官网:

这只是其中的几张图而已,更多图片能够去它的官网查看:

http://www.graphviz.org

这个软件十分弱小,如果把握得好的话,能够画出十分难看的作品,而且还不怕产品经理改需要。然而,在大多数状况下,咱们不太须要用到它的高级性能,往往一些很根底的性能就能够应酬咱们工作中的 80% 以上的需要了。

这个软件的装置很简略,只需执行以下命令即可:

sudo apt install graphviz

稍等一小会儿,就装置胜利了。而后,就能够欢快地游玩啦~

咱们先来看看一个 Hello world 程度的作品。

首先,在任意地位创立一个 test.dot 文件(当然也能够叫其它名字),文件的内容如下:

graph g{"Hello" -- "world"}

而后,执行以下命令:

dot -Tpng -o test.png test.dot

之后,就在当前目录下生成了上面这幅最简略的图片了,是不是非常简单?

咱们来简略介绍下 DOT 命令的语法。在 test.dot 文件里,graph 示意的是这幅图是 无向图 ,也就是连接线是没有箭头的。与之对应的是 digraph,示意 有向图,连接线是有箭头的。

而图片的形容,是在 {} 里进行,并且也反对正文,正文格调与 C 语言相似,// 用于单行正文,/**/ 用于多行正文。

前文提到,dot 命令非常弱小,这里只介绍它的最根本的一些用法,而学会这些最根本的命令,就能够应答 80% 左右的工作。更多高级用法能够参考它的官网。

节点

相似于脚本语言,节点无需申明就能够间接应用。而对于节点,咱们个别设置它的以下几个属性:

  • shape 形态
  • label 标签
  • style 类型,填充还是非填充
  • color 线条色彩
  • fillcolor 填充色彩

这些属性是在节点后的一对方括号 [] 里设置的。很多状况下,咱们的节点属性是完全相同的,那么咱们能够定义一个 node,并对它进行设置,那么图形里所有节点属性都跟 node 一样。如果某个节点想搞非凡,只需独自对它进行设置即可。

graph g{node [shape = "box", style = "filled", color = "red", fillcolor = "green"]   // 设置节点的默认形态,类型,色彩,填充色彩
    a [shape = "ellipse", fillcolor = "yellow", label = "Hello"]    // 对某个节点进行独自设置
    b [label = "world"]   
    a -- b
    a -- c     // 不对 c 进行设置,应用默认属性
    d [shape = "circle",label = "cicle"]    // d 独自设置属性
    c -- d
}

连接线

连接线按照有无箭头分为有向边和无向边。它的罕用属性有如下:

  • style 类型,实线还是虚线
  • color 连接线色彩
  • label 标签
  • labelfontcolor 标签字体色彩
  • headlabel 起始标签内容
  • taillabel 完结标签内容
  • decorate 标签与连接线之间有连线标注

对于有向边,还能够设置终点及起点的地位,用 e, s, w, n 示意 东南西北,也能够组合来示意,具体请看上面实例。

和节点相似,连接线也能够设置默认属性,用 edge 示意。如果不应用默认属性的话,也能够自定义属性。

digraph edge_settings {edge [color = "green", decorate = false]        // 设置边的默认属性
    node [shape = "polygon", sides = 4, color = "blue"]
    a -> b [style = "dotted", color = "red", label = "a to b"]  // 设置 style、color、label
    b: se -> c: w [headlabel = "end",  taillabel = "start"]     // 设置边从 b 的“东南方”登程,从 c 的“东方”完结,设置有向边终点和起点的 label
    {c, f} -> {d, e} [label = "multi-lines", decorate = true]    // 能够用这种形式同时画多条边
}

DOT 语言能够形容无向图和有向图两种图,graph 标识无向图,digraph 标识有向图。对于图的属性设置,罕用的有以下一些:

  • size 尺寸
  • label 标签
  • labelloc 标签地位,通常设置为 t(顶),或 b(底)
  • labeljust 标签对齐,比方左对齐、右对齐、居中,等等
  • bgcolor 背景色彩
  • rankdir 布局,比方从左往右,或者从上往下

图外面还能够蕴含子图,子图必须以 cluster 作为前缀开始。比方官网首页上的图,即本文第一张图,就是图里蕴含子图,它的源码如下:

digraph graph_settings {start [shape = "Mdiamond"]
    end [shape = "Msquare"]
    
    subgraph cluster_sub1 {
        label = "process #1"
        labelloc = "t"
        bgcolor = "gray55"
        node [style = "filled", color = "white"]
        a0 -> a1 -> a2 -> a3 -> a0
    }
    subgraph cluster_sub2 {
        label = "process #2"
        labelloc = "t"
        color = "blue"
        node [style = "filled", color = "black", fillcolor = "gray55"]
        b0 -> b1 -> b2 -> b3
    }
    
    start -> {a0, b0}
    a1 -> b3
    b2 -> a3
    {a3, b3} -> end
}

小结

利用 dot 命令来绘图,十分省事,也非常灵活,对于设计菜鸟而言,几乎不能太不便!它的性能非常弱小,本文所介绍的只是它十分罕用,但也是十分实用的一些基本功能,把握这些性能就能应答工作中绝大部分的场景。但想要做出更加炫酷的成果,还须要再细细钻研它官网的材料。


最初,最近很多小伙伴找我要Linux 学习路线图,于是我依据本人的教训,利用业余时间熬夜肝了一个月,整顿了一份电子书。无论你是面试还是自我晋升,置信都会对你有帮忙!

收费送给大家,只求大家金指给我点个赞!

电子书 | Linux 开发学习路线图

也心愿有小伙伴能退出我,把这份电子书做得更完满!

有播种?心愿老铁们来个三连击,给更多的人看到这篇文章

举荐浏览:

  • 干货 | 程序员进阶架构师必备资源免费送
  • 神器 | 反对搜寻的资源网站
正文完
 0