zoukankan      html  css  js  c++  java
  • 流程图 Graphviz

    0.目录

    1.参考

    https://www.processon.com/  应该值得一试

    知乎 用什么软件画流程图?

    9款国内外垂直领域的在线作图工具[可代替visio]

    程序员必知的七个图形工具

    说到流程图还是再次提及一下,我们之前说到的Graphviz 。

    Graphviz (英文:Graph Visualization Software的缩写)是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形。它也提供了供其它软件使用的库。

    它的主要特点是代码生成图像,并且足够的简单。

    2.Graphviz

    (1)下载安装

    http://graphviz.org/Download.php 最下方 agree

    Windows
    Stable and development Windows Install packages

     (2)添加环境变量

    path添加: D:Program Files (x86)Graphviz2.38in

    新开cmd:dot -?

     (3)中文支持

    在 Windows 上設定 Graphviz 中文字型

    只要你用 UTF-8 的編碼來儲存描述關係圖的 dot 檔,Graphviz 也可以產生包含中文的關係圖。但 Windows 版的 Graphviz 似乎沒有設定好 fontconfig,因此會找不到中文字型,只要設定好 fontconfig 即可解決。依照預設安裝路徑,設定檔在 C:Program FilesGraphviz 2.21etcfontsfonts.conf,找到以下這行:
    
        <dir>#FONTDIR#</dir>
    改成 Windows 字型檔的路徑:
    
        <dir>C:WINDOWSFonts</dir>
    Graphviz 就可以使用中文了!但注意目前似乎只能輸入英文的字型名稱,範例如下:
    
    digraph g {
        node[fontname = "PMingLiu"];
        "中文" -> "英文";
    }
    View Code

    (4) 可以运行gvedit.exe写入代码,f5直接预览效果

    (5) python库,其实用处不大

    https://pypi.python.org/pypi/graphviz

    3.参考文档

    官网: http://graphviz.org/Documentation.php

    使用DOT语言和Graphviz绘图(翻译)

    一次性批量定义属性

        node [color=Red,fontname=Courier,shape=box] //All nodes will this shape and colour
        edge [color=Blue, style=dashed] //All the lines look like this

    标 题: 【合集】dot language Graphviz流程图的问题

      (连线连在角上)

      portPos headport tailport 这几个属性

    画图神器--graphviz

    digraph login3times{
    
        edge[fontname="Microsoft YaHei"]
        node[shape=box, fontname="Microsoft YaHei" size="20,20"]
        fontname="Microsoft YaHei"
        label="三次登录流程图"

    4.语法注意事项

    (1)框图为node,默认形状 ellipse 椭圆形, shape = box 长方形,diamond 菱形,circle 圆形

    (2)连线为edge,箭头方向 [dir=forward, back, both, or none]

    (3)在有必要的时候加双引号,如:“do sth”, "func()"

    (4)注释为 //, 或 /*   */

    (5)不方便之处:

    A -> B -> C ->D[label=to] ,则会在三条连线上都添加 to 字样

    对比:

    A -> B

    B -> C[label=to]

    C ->D

    5.综合应用

    //G:pydatapycode>dot eg.dot -Tpng -o eg.png
    digraph graphname
    {
    //rankdir=LR
    node[fontname = "simsun"]
    fontname="Microsoft YaHei"
    label="代理IP获取流程图"
    
    START[label="入口get_mimvp()" shape=box]
    END[label=出口ip_port_type_tuple_list, shape=box]
    JUDGE[label="feature_vectors == []" color=Blue, fontsize=24, shape=diamond]
    
    START -> JUDGE
                    {rank=same; "extract_features()", "load_mimvp()"}
                    JUDGE -> "extract_features()"[label=True tailport=w]// headport=n]
                            "extract_features()"[style=filled, fillcolor=orange]
                    JUDGE -> "load_mimvp()"[label=False tailport=s headport=n]
                        
    "extract_features()" -> "load_mimvp()"[label=return, fontcolor=red, dir=forward]   //dir=forward, back, both, or none        
    
    
    port_src_list[style=filled, fillcolor=yellow]
    port_list[style=filled, fillcolor=green]
    
    "load_mimvp()" -> {ip_list, type_list, port_src_list}
                                            port_src_list -> port_list
    {rank=same; ip_list, type_list, port_list} -> "merge_result" -> END
    
    
        subgraph cluster1
        {
        label=子图1_特征提取
        
        "invoke extract_features()"[style=filled, fillcolor=orange]
        judge[label="filepath is not None" color=Blue, shape=diamond]
        feature_vectors[style=filled, fillcolor=red]
        
        "invoke extract_features()" -> judge
            judge -> "load_images_from_filepath()"[label=True tailport=w]
            judge -> "load_images_from_src_list()"[label=False tailport=s]
            {rank=same; "load_images_from_filepath()", "load_images_from_src_list()"}
                "load_images_from_filepath()" -> "split_image()"[label=img_list]
                "load_images_from_src_list()" -> "split_image()"[label=img_list]
                    "split_image()" -> "build_vector()"[label="split_imgs"]
                        "build_vector()" -> feature_vectors[label="item = {input: vector}"]   // -> "load_mimvp()"
        } 
    
     
        subgraph cluster2
        {
        label=子图2_余弦相似度比较
        port_src[style=filled, fillcolor=yellow]
        port[style=filled, fillcolor=green]
    
        port_src -> "get_port()" -> "load_image_from_src()" -> "invoke split_image()" -> "invoke build_vector()"
            "invoke build_vector()" -> "cos_similarity()"[label="vector
    feature_vectors", fontcolor=red]
                "cos_similarity()" -> port
        }  
    }
    View Code

    代码另存为eg.dot, 编码utf-8

    在命令行中运行:G:pydatapycode>dot eg.dot -Tpng -o eg.png

  • 相关阅读:
    【秒杀系统】零基础上手秒杀系统(三):抢购接口隐藏 + 单用户限制频率
    【秒杀系统】零基础上手秒杀系统(二):令牌桶限流 + 再谈超卖
    【秒杀系统】从零开始打造简易秒杀系统(一):防止超卖
    EditPlus快捷键
    ant的安装及项目的发布
    Java 中类型转换
    navicat 结合快捷键
    go中安装Beego不成功笔记
    Excel中添加下拉框
    在Excel中把横行与竖列进行置换、打勾号
  • 原文地址:https://www.cnblogs.com/my8100/p/7448283.html
Copyright © 2011-2022 走看看