赞
踩
刀塔霸业版本:2019年7月24日
目录
代码如下:
- # -*- coding: utf-8 -*-
- """
- @author: d0t4
- @date: 2019/7/29
- @desc: 生成刀塔霸业中各棋子的关系图(Gephi图文件,需导入Gephi后显示)
- """
-
-
- # 获取一个列表中的两两无向对
- def get_pairs_in_lists(data_list):
- if len(data_list) == 2:
- return data_list[0] + "," + data_list[1] + "\n"
- elif len(data_list) == 1:
- return ""
-
- pairs = ""
- for i in range(1, len(data_list)):
- pairs += data_list[0] + "," + data_list[i] + "\n"
-
- return pairs + get_pairs_in_lists(data_list[1:])
-
-
- # 词云图
- def gen_wordcloud(text):
- import matplotlib.pyplot as plt
- import wordcloud
- from PIL import Image
- import numpy as np
-
- back = np.array(Image.open("logo.png"))
- w = wordcloud.WordCloud(scale=2, font_path="C:/Windows/Fonts/simkai.ttf", mask=back, background_color="white", )
- w.generate(text)
-
- plt.imshow(w)
- plt.axis("off")
- plt.show()
- w.to_file("cloud.png")
-
-
- if __name__ == '__main__':
- races = [
- # 种族
- "斧王,主宰,兽王,干扰者", # 悍将
- "巨魔战将,巫医,暗影萨满,蝙蝠骑士", # 巨魔
- "修补匠,发条技师,赏金猎人,伐木机,炼金术士,工程师", # 好斗
- "卓尔游侠,帕吉,亚巴顿,瘟疫法师,巫妖", # 无情
- "小小,变体精灵,剃刀,天穹守望者,谜团", # 太古
- "巨牙海民,魅惑魔女,剧毒术士,沙王,狼人,德鲁伊", # 野人
- "敌法师,先知,帕克,树精卫士,露娜,幻影刺客,风行者,圣堂刺客,米拉娜", # 无踪
- "术士,食人魔魔法师", # 血亲
- "血魔,水晶室女,全能骑士,丽娜,光之守卫,昆卡,龙骑士", # 人族
- "帕克,冥界亚龙,龙骑士", # 龙
- "斯拉达,斯拉克,美杜莎,潮汐猎人", # 鳞甲
- "混沌骑士,痛苦女王,影魔,恐怖利刃,末日使者", # 恶魔
- "狙击手,矮人直升机", # 神射手
-
- # 职业
- "血魔,赏金猎人,变体精灵,痛苦女王,冥界亚龙,幻影刺客,斯拉克,沙王,圣堂刺客", # 刺客
- "魅惑魔女,先知,树精卫士,德鲁伊", # 德鲁伊
- "敌法师,恐怖利刃", # 恶魔猎人
- "修补匠,发条技师,伐木机,工程师,矮人直升机", # 发明家
- "食人魔魔法师,水晶室女,帕克,剃刀,丽娜,光之守卫,巫妖", # 法师
- "卓尔游侠,兽王,狙击手,风行者,狼人,米拉娜,美杜莎", # 猎人
- "蝙蝠骑士,混沌骑士,露娜,亚巴顿,全能骑士,龙骑士", # 骑士
- "暗影萨满,天穹守望者,干扰者", # 萨满
- "术士,巫医,剧毒术士,影魔,炼金术士,瘟疫法师,谜团", # 术士
- "小小,巨牙海民,斧王,主宰,帕吉,斯拉达,潮汐猎人,巨魔战将,昆卡,末日使者", # 勇士
- ]
-
- graph_data = ""
- for race in races:
- chess_list = race.split(",")
- graph_data += get_pairs_in_lists(chess_list)
-
- # 将关系图写入文件,将该文件导入Gephi后可显示棋子关系图
- print(graph_data)
- with open("underlords_chess.csv", "w", encoding='utf-8') as f:
- f.write(graph_data)
-
- # 生成词云图
- gen_wordcloud(graph_data)
将以上代码生成的underlords_chess.csv导入Gephi,可得效果图:
棋子根据Betweenness Centrality着色。可见四好斗、三法等只需少量棋子(两个或三个)即可激活两种羁绊。
词云图如下,使用刀塔霸业的logo作为mask:
参考:利用Python+Gephi构建金庸人物知识图谱_南极向北的博客-CSDN博客
2023-5-15更新:在Win10中运行时报错“ValueError: Only supported for TrueType fonts”,解决方法为更新pillow至最新版本,当天为9.5.0版本。
pip install pillow --upgrade
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。