模块可视化"/>
用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这个模块可视化
发布评论