from graphviz import Digraph """ 绘制家族树 """ # 创建有向图 dot = Digraph(comment='家族树', node_attr={'fontname': 'WenQuanYi Zen Hei'}, edge_attr={'fontname': 'WenQuanYi Zen Hei'}) dot.attr(rankdir='TB', dpi='300') # 重名 dot.node('1', "发昌") dot.node('2', "发昌") dot.node('3', "长松") dot.node('4', "长松") # 女性人物 female_nodes = ["德萍", "长香", "发双", "发娜", "发雅", "发桢", "发雯", "发莲", "发花", "发宇", "发洵", "其晞", "其园", "其楠", "其晴", "其菲","长婷","长欢","长娟","长怡","发兰"] # 定义父子关系 parent_child_relations = [ ('可观', '光友'), ('光友', '世法'), ('世法', '道胜'), ('世法', '道启'), ('世法', '道佑'), ('道佑', '尚铎'), ('道佑', '尚助'), ('道佑', '尚达'), ('道佑', '尚朝'), ('道佑', '尚国'), ('尚铎', '士进'), ('尚铎', '士忠'), ('尚铎', '士富'), ('尚助', '士元'), ('尚助', '士怀'), ('尚助', '士纲'), ('尚助', '士位'), ('尚助', '士恺'), ('尚达', '士贵'), ('尚朝', '士恭'), ('尚国', '士宽'), ('尚国', '士信'), ('尚国', '士敏'), ('尚国', '士惠'), ('士进', '邦龙'), ('士进', '邦乐'), ('士忠', '邦志'), ('士忠', '邦正'), ('士富', '邦秀'), ('士怀', '邦朝'), ('士怀', '邦田'), ('士怀', '邦奇'), ('士怀', '邦学'), ('士怀', '邦强'), ('士纲', '邦彦'), ('士纲', '邦清'), ('士位', '邦宗'), ('士贵', '邦国'), ('士贵', '邦胜'), ('士恭', '邦应'), ('士恭', '邦全'), ('士信', '邦和'), ('士信', '邦云'), ('士敏', '邦元'), ('士惠', '邦霖'), ('邦乐', '载万'), ('邦乐', '载有'), ('邦乐', '载彦'), ('邦秀', '载禄'), ('邦秀', '载厚'), ('邦秀', '载元'), ('邦田', '载祥'), ('邦田', '载春'), ('邦彦', '载阳'), ('邦国', '载兴'), ('邦国', '载清'), ('邦国', '载荣'), ('邦国', '载祜'), ('邦胜', '载赓'), ('邦胜', '载歌'), ('邦应', '载福'), ('邦应', '载寿'), ('邦应', '载恩'), ('邦全', '载仁'), ('邦和', '载道'), ('邦和', '载富'), ('邦元', '载德'), ('邦元', '载义'), ('邦元', '载礼'), ('邦霖', '载让'), ('邦霖', '载成'), ('邦霖', '载宝'), ('载彦', '元年'), ('载彦', '元春'), ('载彦', '元长'), ('载阳', '元泰'), ('载阳', '元唱'), ('载阳', '元庆'), ('载阳', '元魁'), ('载阳', '元丰'), ('载清', '元炳'), ('载清', '元济'), ('载清', '元勋'), ('载清', '元功'), ('载清', '元修'), ('载荣', '元鼎'), ('载荣', '元钟'), ('载荣', '元彛'), ('载荣', '元琛'), ('载祜', '元抡'), ('载祜', '元会'), ('载祜', '元松'), ('载赓', '元良'), ('载歌', '元恺'), ('载歌', '元选'), ('载歌', '元举'), ('载歌', '元宪'), ('载福', '元臣'), ('载福', '元定'), ('载福', '元顺'), ('载恩', '元凤'), ('载恩', '元龙'), ('载仁', '元勤'), ('载仁', '元俭'), ('载仁', '元学'), ('载道', '元端'), ('载道', '元章'), ('载让', '元甫'), ('元春', '善全'), ('元唱', '善怀'), ('元唱', '善元'), ('元庆', '善良'), ('元庆', '善和'), ('元丰', '善琪'), ('元炳', '善辅'), ('元炳', '善举'), ('元炳', '善传'), ('元炳', '善富'), ('元勋', '善宏'), ('元修', '善行'), ('元修', '善言'), ('元抡', '善彰'), ('元抡', '善扬'), ('元会', '善藏'), ('元会', '善身'), ('元会', '善维'), ('元会', '善宝'), ('元良', '善述'), ('元恺', '善荫'), ('元举', '善炽'), ('元举', '善祯'), ('元举', '善进'), ('元举', '善从'), ('元举', '善持'), ('元臣', '善道'), ('元臣', '善为'), ('元臣', '善庆'), ('元臣', '善保'), ('元臣', '善守'), ('元学', '善祥'), ('元学', '善士'), ('善全', '德昌'), ('善怀', '德大'), ('善怀', '德恒'), ('善元', '德安'), ('善元', '德溥'), ('善良', '德太'), ('善良', '德定'), ('善良', '德友'), ('善良', '德仁'), ('善和', '德文'), ('善和', '德武'), ('善琪', '德金'), ('善琪', '德艳'), ('善琪', '德映'), ('善辅', '德远'), ('善辅', '德麟'), ('善传', '德长'), ('善富', '德兴'), ('善富', '德海'), ('善富', '德怀'), ('善富', '德周'), ('善富', '德齐'), ('善宏', '德政'), ('善行', '德明'), ('善行', '德辅'), ('善言', '德庆'), ('善言', '德广'), ('善言', '德林'), ('善扬', '德敬'), ('善扬', '德钰'), ('善身', '德备'), ('善身', '德胜'), ('善维', '德峰'), ('善维', '德萍'), ('善宝', '德忠'), ('善宝', '德成'), ('善述', '德聘'), ('善述', '德炎'), ('善述', '德种'), ('善进', '德元'), ('善进', '德利'), ('善持', '德福'), ('善持', '德泳'), ('德昌', '长辉'), ('德昌', '长怡'), ('德安', '长江'), ('德安', '长恩'), ('德安', '长有'), ('德定', '长泳'), ('德仁', '长明'), ('德仁', '长伦'), ('德文', '长元'), ('德文', '长绵'), ('德文', '长新'), ('德文', '长生'), ('德艳', '长益'), ('德映', '长威'), ('德映', '长翔'), ('德远', '3'), ('德远', '长青'), ('德远', '长学'), ('德兴', '长存'), ('德兴', '长友'), ('德兴', '长胜'), ('德海', '长文'), ('德海', '长峰'), ('德庆', '长润'), ('德庆', '长柏'), ('德广', '长华'), ('德广', '长国'), ('德林', '长旺'), ('德林', '长平'), ('德敬', '4'), ('德敬', '长征'), ('德胜', '长宏'), ('德胜', '长香'), ('德峰', '长婷'), ('德萍', '长伟'), ('德忠', '长磊'), ('德忠', '长欢'), ('德成', '长乐'), ('德成', '长娟'), ('德炎', '长福'), ('德炎', '长贵'), ('德炎', '长安'), ('德炎', '长寿'), ('德种', '长林'), ('德元', '长刚'), ('德元', '长龙'), ('长江', '发双'), ('长有', '发逸'), ('长有', '发娜'), ('长泳', '发瑞'), ('长泳', '发雅'), ('长明', '发东'), ('长绵', '发旺'), ('长绵', '发辉'), ('长新', '发洋'), ('长生', '发桢'), ('长威', '发雯'), ('长青', '发良'), ('长青', '发莲'), ('长友', '发家'), ('长友', '发花'), ('长胜', '发传'), ('长胜', '发涛'), ('长润', '发翔'), ('长柏', '发波'), ('长华', '发松'), ('长旺', '1'), ('长平', '发鹏'), ('长平', '发磊'), ('长香', '2'), ('长香', '发广'), ('长香', '发宇'), ('长伟', '发洵'), ('长福', '发启'), ('长福', '发明'), ('长贵', '发文'), ('长贵', '发祥'), ('长寿', '发平'), ('长林', '发義'), ('长林', '发兰'), ('发良', '其非'), ('发良', '其凡'), ('发翔', '其晞'), ('发文', '其旺'), ('发文', '其园'), ('发祥', '其达'), ('发祥', '其楠'), ('发平', '其红'), ('发平', '其晴'), ('发平', '其菲'), ('发義', '其昊') ] # 定义过继关系 adoption_relations = [ ('士宽', '邦云'), ('邦朝', '载祥'), ('邦奇', '载祥'), ('邦学', '载春'), ('邦强', '载春'), ('邦清', '载阳'), ('邦宗', '载阳'), ('邦宗', '元魁'), ('邦清', '元庆'), ('邦云', '载富'), ('载有', '元俭'), ('载禄', '元俭'), ('载元', '元俭'), ('载祥', '元丰'), ('载春', '元丰'), ('载兴', '元济'), ('载富', '元章'), ('元俭', '善和'), ('元济', '善传'), ('元鼎', '善言'), ('元钟', '善言'), ('元宪', '善祯'), ('元顺', '善为'), ('元松', '善宝'), ('善举', '德兴'), ('善彰', '德敬'), ('善荫', '德种'), ('德武', '长新'), ('德政', '长青'), ('德齐', '长胜') ] # 添加节点和父子关系边 # for parent, child in parent_child_relations: # dot.node(parent) # dot.node(child) # dot.edge(parent, child) # 添加节点和父子关系边 for parent, child in parent_child_relations: if parent in female_nodes: dot.node(parent, shape='ellipse', style='filled', color='pink') else: dot.node(parent, shape='box', style='filled', color='lightblue') if child in female_nodes: dot.node(child, shape='ellipse', style='filled', color='pink') else: dot.node(child, shape='box', style='filled', color='lightblue') dot.edge(parent, child) # 添加过继关系边 for adoptive_parent, adoptee in adoption_relations: dot.node(adoptive_parent) # dot.node(adoptee) dot.node(adoptee, shape='diamond', style='filled', color='lightgreen') dot.edge(adoptive_parent, adoptee, style='dashed', label='继', color="blue") # 渲染图形 dot.render('family_tree.gv', view=True)