Python实现股权结构图自动生成
2023-09-11 14:20:29 时间
有的时候我们需要对公司的股权结构图进行透视,如果手动绘制的画有些太麻烦,当然手动绘制的一定很好看,但是如果只是需要一个示意图的话,利用Python实现就可以了
简单效果图
只是一个示意图,具体细节大家可以自行调节
源码
# -*- coding: utf-8 -*-
from graphviz import Digraph
L=[
[1, '共青城民生信保成长股权投资合伙企业(有限合伙)', 1, 'B1公司', 2, '70.00%'],
[2, 'A公司', 1, 'B2公司', 2, '50.00%'],
[3, 'A公司', 1, 'B3公司', 2, '40.00%'],
[4, 'B1公司', 2, 'C1公司', 3, '10.00%'],
[5, 'B1公司', 2, 'C2公司', 3, '20.00%'],
[6, 'B1公司', 2, 'C3公司', 3, '30.00%'],
[7, 'B2公司', 2, 'C3公司', 3, '40.00%'],
[8, 'B2公司', 2, 'C4公司', 3, '35.00%'],
[9, 'B3公司', 2, 'C4公司', 3, '20.00%'],
[10, 'B3公司', 2, 'C5公司', 3, '30.00%'],
[11, 'C4公司', 3, 'C5公司', 3, '30.00%'],
[12, 'C5公司', 3, 'B1公司', 2, '10.00%']
]
father_name_list=[]
child_name_list=[]
equity_portion_list=[]
dic={}
for i1 in range(len(L)):
M=L[i1]
father_name=M[1]
father_name_list.append(M[1])
father_layer=M[2]
child_name=M[3]
child_name_list.append(M[3])
child_layer=M[4]
equity_portion=M[5]
equity_portion_list.append(M[5])
for x in father_name:
dic[father_name]=father_layer #生成父单位名称和对应的层级(用字典考虑去重)
for y in child_name:
dic[child_name]=child_layer #将子单位名称和对应的层级也添加到字典中
name_layer_list = sorted(dic.items(), key=lambda x: x[1]) #字典进行排序(从小到大)
u=[]
for z in name_layer_list:
company_name=z[0]
layer=z[1]
u.append(z[1])
number_of_layers=max(u) #计算层数
#按各公司的层数生产分层的节点:
g=Digraph(name='复杂股权结构图')
for key in dic:
for n in range(number_of_layers+1):
if dic[key]==n:
with g.subgraph() as layer_n:
layer_n.attr(rank='same')
layer_n.node(name=key,color='blue',shape='box',fontname='Microsoft YaHei')
#生产各节点间的连线:
for i2 in range(len(L)):
g.edge(father_name_list[i2],child_name_list[i2],label=equity_portion_list[i2],color='red',fontname='Microsoft Yahei')
g.view()
相关文章
- [Python]架设python虚拟环境以及部署PythonWeb服务
- 【Python实战】python中含有中文字符无法运行
- python: 安装DeOldify库:黑白图片上色(Python 3.7.15)
- Atitit web httphandler的实现 java python node.js c# net php 目录 1.1. Java 过滤器 servelet1 1.2. Python的
- Python的IDE:基于Eclipse/MyEclipse软件的PyDev插件配置python的开发环境(不同python项目加载不同版本的python)—从而实现Python编程图文教程之详细攻略
- Python:利用python代码编程实现将视频的avi格式转换为MP4格式
- Wps:wps中excel表格数据整理常用技巧—利用wps表格实现自动填充等差数列然后预测数值、将python语言中的列表格式数据存为excel内
- Python之matplotlib:基于matplotlib库利用python语言实现一张画布显示多张图的多种方法
- 已解决2. Set PROTOCOL_BUPFERS_PYTHON_iMPLEMENTATION=python (but this will use pure-Python parsing and w
- 已解决FileNotFoundError: [Errno 2] No such file or directory: ‘E:自动备份文档Python修改配置.csv‘
- 〖Python自动化办公篇⑳〗 - python实现邮件自动化 - 发送html邮件和带附件的邮件
- 【Python成长之路】python并发学习:多进程与多线程的用法及场景介绍
- Python实现基于Optuna超参数自动优化的LightGBM分类模型(LGBMClassifier算法)项目实战
- Python项目学习一:项目一:自动添加标签--再次实现
- 【华为机试真题 Python实现】按身高和体重排队
- python基础===一行 Python 代码实现并行(转)
- python基础===利用PyCharm进行Python远程调试(转)
- 【Python】Visual Studio Code 安装&&使用 hello python~~~~
- 华为校招机试 - 简单的自动曝光、平均像素值(Java & JS & Python)
- 【Python基础】python爬虫之异步网络爬虫ǃ
- 〖Python自动化办公篇㉑〗- python实现邮件自动化 - 定时发送邮件
- 微信朋友圈自动点赞(Python代码实现)
- 从零开始,学会Python爬虫不再难!!! -- (13)selenium项目:自动点赞机丨蓄力计划