用pygraphviz这个模块可视化

编程入门 行业动态 更新时间:2024-10-26 10:36:08

用pygraphviz这个<a href=https://www.elefans.com/category/jswz/34/1771428.html style=模块可视化"/>

用pygraphviz这个模块可视化

Python实验

  • 用pygraphviz这个模块可视化
    • 步骤
    • 关键代码
    • 实验效果图
    • 代码

效果图

用pygraphviz这个模块可视化

分析世界百强IT企业的组织管理结构和用人单位内的职位升迁关系示意图,用pygraphviz这个模块可视化。

步骤

导入模块

import pygraphviz as pgv  

创建图形

G = pgv.AGraph(directed=True, strict=False, 
nodesep=0, ranksep=1.2, rankdir="TB", splines="none", 
concentrate=True, bgcolor="write", compound=True, 
normalize=False, encoding='UTF-8') 
  • directed -> False | True:有向图
  • strict -> True | False:简单图
  • nodesep:同级节点最小间距
  • ranksep:不同级节点最小间距
  • rankdir:绘图方向,可选 TB (从上到下), LR (从左到右), BT (从下到上), RL (从右到左)
  • splines:线条类型,可选 ortho (直角), polyline (折线), spline (曲线), line (线条), none (无)
  • concentrate -> True | False:合并线条 (双向箭头)
  • bgcolor:背景颜色
  • compound -> True | False:多子图时,不允许子图相互覆盖
  • normalize -> False | True:以第一个节点作为顶节点

添加节点

G.add_node(name, label=None, fontname="Times-Roman", 
fontsize=14, shape="ellipse", style="rounded", 
color="black", fontcolor="black", pos="x,y(!)",fixedsize=False, width=1, height=1) 

G.add_nodes_from(names, **attr) # 批量添加点,参数同上

  • name -> str:节点名。label 为节点标签,未指定时显示 name
  • fontname:字体名称,常用:Microsoft YaHei, SimHei, KaiTi, SimSun, FangSong, Times-Roman, Helvetica, Courier。可以使用 “times bold italic” 表示字体类型、粗细、倾斜
  • fixedsize -> Flase | True | "shape":固定大小,默认随文本长度变化。设置为 True 时,width 和 height 参数共同控制点大小。设置为 "shape" 时,将取标签文本和设置值的较大者 style:节点线样式,使用color` 设置线条颜色 (style=“filled” 时,设置填充颜色)
  • Shape:节点形状

    添加边
G.add_edge(origin, target, color="black", style="solid", 
penwidth=1, label="", fontname="Times-Roman", fontsize=14,
fontcolor="black", arrowsize=1, arrowhead="normal", 
arrowtail="normal", dir="forward")   

G.add_nodes_from([[origin_1, target_1], [origin_2, target_2],…], **attr) # 批量添加线,参数同上

  • label -> str:边标签,未指定时不显示
  • penwidth:线条粗细
  • arrowsize:箭头大小
  • arrowhead:箭头类型,可选 normal, vee
  • dir:箭头方向,可选 both, forward, back, none。只有在无向图中才起作用!

导出图形

G.layout()    
G.draw(file_name, prog="neato")  
  • prog:布局算法,可选 neato, dot (荐), twopi, circo, fdp

== 以上来自于知乎某大佬的文章==

关键代码

1.#设置节点  
G.add_node(root,style="filled",shape="box3d",color="#feb64d")  
for positive in[eval(_) for _ in dir() if _.startswith("positive")]:     G.add_node(positive,style="filled",shape="circle",color="#CFDBF6",fontname="FangSong")  
for negative in[eval(_) for _ in dir() if _.startswith("negative")]:  G.add_node(negative, style="filled", shape="polygon", color="#B4E7B7",fontname="FangSong")  
#添加边  
G.add_edges_from([[root,positive_1],[root,positive_2],[root,positive_3],[root,positive_4],[root,positive_5]],  color="#CFDBF6",style="dashed",penwidth=1.5)  
G.add_edges_from([[positive_1,negative_6],[positive_1,negative_7],[positive_1,negative_8],          [positive_2,negative_9],[positive_2,negative_10],[positive_2,negative_11],[positive_2,negative_12],
[positive_2,negative_13],[positive_2,negative_14],[positive_3,negative_15],[positive_3,negative_16],
[positive_3,negative_17],[positive_3,negative_18],[positive_3,negative_19],[positive_3,negative_20],
[positive_4,negative_21],[positive_5,negative_22],[positive_5,negative_23],[positive_5,negative_24],
[positive_5,negative_25],[positive_5,negative_26]], color="#B4E7B7", style="dashed", penwidth=1.5)  
G.layout()  
G.draw("组织架构.png",prog="dot")  

实验效果图

代码

import pygraphviz as pgv
G = pgv.AGraph(directed=True,rankdir="TB",encoding='UTF-8')#有向从上到下
#设置节点
root = "CEO"
positive_1="COO"
positive_2="CTO"
positive_3="CMO"
positive_4="CFO"
positive_5="CSO"
negative_6="客服售后vp"
negative_7="仓储vp"
negative_8="工程VP"
negative_9="前台VP"
negative_10="后台VP"
negative_11="架构VP"
negative_12="数据VP"
negative_13="云VP"
negative_14="产品VP"
negative_15="大客户总监"
negative_16="公关VP"
negative_17="市场SVP"
negative_18="POP VP"
negative_19="图书VP"
negative_20="家电VP"
negative_21="财务VP"
negative_22="法务VP"
negative_23="审计总监"
negative_24="战略总监"
negative_25="行政总监"
negative_26="人力VP"
#设置节点
G.add_node(root,style="filled",shape="box3d",color="#feb64d")
for positive in[eval(_) for _ in dir() if _.startswith("positive")]:G.add_node(positive,style="filled",shape="circle",color="#CFDBF6",fontname="FangSong")
for negative in[eval(_) for _ in dir() if _.startswith("negative")]:G.add_node(negative, style="filled", shape="polygon", color="#B4E7B7",fontname="FangSong")
#添加边
G.add_edges_from([[root,positive_1],[root,positive_2],[root,positive_3],[root,positive_4],[root,positive_5]],color="#CFDBF6",style="dashed",penwidth=1.5)
G.add_edges_from([[positive_1,negative_6],[positive_1,negative_7],[positive_1,negative_8],[positive_2,negative_9],[positive_2,negative_10],[positive_2,negative_11],[positive_2,negative_12],[positive_2,negative_13],[positive_2,negative_14],[positive_3,negative_15],[positive_3,negative_16],[positive_3,negative_17],[positive_3,negative_18],[positive_3,negative_19],[positive_3,negative_20],[positive_4,negative_21],[positive_5,negative_22],[positive_5,negative_23],[positive_5,negative_24],[positive_5,negative_25],[positive_5,negative_26]],color="#B4E7B7", style="dashed", penwidth=1.5)
G.layout()
G.draw("组织架构.png",prog="dot")

更多推荐

用pygraphviz这个模块可视化

本文发布于:2023-07-28 18:00:17,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1269608.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模块   pygraphviz

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!