美文网首页
graphviz 简单使用记录

graphviz 简单使用记录

作者: crosstrack | 来源:发表于2018-05-21 22:00 被阅读50次

    api 文档:http://graphviz.readthedocs.io/en/stable/api.html#graph
    最近在聚宽做每天收盘分析时,想做一个涨停传导路径,偶然了解到graphviz库,记录一下使用过程中的用法:

    from graphviz import Digraph
    
    dot = Digraph(comment='The Round Table')
    #dot.attr('graph',rankdir='LR') #这个是关键,否则输出的是上下的
    #添加圆点 A, A的标签是 King Arthur
    dot.node('A', 'King Arthur')
    
    #添加圆点 B, B的标签是 Sir Bedevere the Wise
    dot.node('B', 'Sir Bedevere the Wise')
    
    #添加圆点 L, L的标签是 Sir Lancelot the Brave
    dot.node('L', 'Sir Lancelot the Brave')
    
    dot.node('E', 'King Arthur')
    
    #创建一堆边,即连接AB的边,连接AL的边。
    dot.edges(['AB', 'BL','LE'])
    
    

    输出如下图:


    屏幕快照 2018-05-21 下午9.51.06.png

    下面是我在聚宽中的代码:

    from graphviz import Digraph
    
    
    def plot_sparse_network(dot,data,key):
        data = data.sort(columns = ['连板','时间'],axis = 0,ascending = [False,True])
        lb_cnts = array(data.loc[:,'连板'])
        lb_cnts_exdump = []
        parent_node = None
        for i in lb_cnts:
            if i not in lb_cnts_exdump:
                lb_cnts_exdump.append(i)
        #从大到小排序,获得连板之王
        lb_cnts_exdump.sort(reverse = True)
        for i in range(len(lb_cnts_exdump)):
            cnt = lb_cnts_exdump[i]
            level_df = data[data['连板'] == cnt]
            indexes = array(level_df.index)
            for j in range(len(indexes)):
                node_name = level_df.ix[j,'名称']
                node_description = level_df.ix[j,'名称']
                if j == 0:
                    node_description += str(cnt) 
                dot.node(node_name, node_description)
                if parent_node:
                    dot.edge(parent_node,node_name,key)
                if j == len(indexes)-1 :
                    #作为下一层的父节点
                    parent_node = level_df.ix[0,'名称']
    
    dot = Digraph(comment='The Round Table')
    dot.attr('graph',rankdir='LR')
    

    最后的输出是


    521.png

    是不是还不错。
    最关键的是

    dot.attr('graph',rankdir='LR')
    

    文档中:

    attr(kw=None, _attributes=None, **attrs)
    Add a general or graph/node/edge attribute statement.

    • kw – Attributes target (None or 'graph', 'node', 'edge').
    • attrs – Attributes to be set (must be strings, may be empty).

    第一个参数graph的话就是针对布局进行设置,node就是针对节点设置。
    第二个就是朝向选择了

    当初就是没加这句使得生存的图很扁!!

    相关文章

      网友评论

          本文标题:graphviz 简单使用记录

          本文链接:https://www.haomeiwen.com/subject/koxcjftx.html