当前位置:   article > 正文

利用Python+Gephi生成刀塔霸业棋子关系图_wd.generate(f) only supported for truetype fonts

wd.generate(f) only supported for truetype fonts

刀塔霸业版本:2019年7月24日

Gephi下载地址:Download

目录

代码

Gephi效果图

词云图

更新


代码

代码如下:

  1. # -*- coding: utf-8 -*-
  2. """
  3. @author: d0t4
  4. @date: 2019/7/29
  5. @desc: 生成刀塔霸业中各棋子的关系图(Gephi图文件,需导入Gephi后显示)
  6. """
  7. # 获取一个列表中的两两无向对
  8. def get_pairs_in_lists(data_list):
  9. if len(data_list) == 2:
  10. return data_list[0] + "," + data_list[1] + "\n"
  11. elif len(data_list) == 1:
  12. return ""
  13. pairs = ""
  14. for i in range(1, len(data_list)):
  15. pairs += data_list[0] + "," + data_list[i] + "\n"
  16. return pairs + get_pairs_in_lists(data_list[1:])
  17. # 词云图
  18. def gen_wordcloud(text):
  19. import matplotlib.pyplot as plt
  20. import wordcloud
  21. from PIL import Image
  22. import numpy as np
  23. back = np.array(Image.open("logo.png"))
  24. w = wordcloud.WordCloud(scale=2, font_path="C:/Windows/Fonts/simkai.ttf", mask=back, background_color="white", )
  25. w.generate(text)
  26. plt.imshow(w)
  27. plt.axis("off")
  28. plt.show()
  29. w.to_file("cloud.png")
  30. if __name__ == '__main__':
  31. races = [
  32. # 种族
  33. "斧王,主宰,兽王,干扰者", # 悍将
  34. "巨魔战将,巫医,暗影萨满,蝙蝠骑士", # 巨魔
  35. "修补匠,发条技师,赏金猎人,伐木机,炼金术士,工程师", # 好斗
  36. "卓尔游侠,帕吉,亚巴顿,瘟疫法师,巫妖", # 无情
  37. "小小,变体精灵,剃刀,天穹守望者,谜团", # 太古
  38. "巨牙海民,魅惑魔女,剧毒术士,沙王,狼人,德鲁伊", # 野人
  39. "敌法师,先知,帕克,树精卫士,露娜,幻影刺客,风行者,圣堂刺客,米拉娜", # 无踪
  40. "术士,食人魔魔法师", # 血亲
  41. "血魔,水晶室女,全能骑士,丽娜,光之守卫,昆卡,龙骑士", # 人族
  42. "帕克,冥界亚龙,龙骑士", # 龙
  43. "斯拉达,斯拉克,美杜莎,潮汐猎人", # 鳞甲
  44. "混沌骑士,痛苦女王,影魔,恐怖利刃,末日使者", # 恶魔
  45. "狙击手,矮人直升机", # 神射手
  46. # 职业
  47. "血魔,赏金猎人,变体精灵,痛苦女王,冥界亚龙,幻影刺客,斯拉克,沙王,圣堂刺客", # 刺客
  48. "魅惑魔女,先知,树精卫士,德鲁伊", # 德鲁伊
  49. "敌法师,恐怖利刃", # 恶魔猎人
  50. "修补匠,发条技师,伐木机,工程师,矮人直升机", # 发明家
  51. "食人魔魔法师,水晶室女,帕克,剃刀,丽娜,光之守卫,巫妖", # 法师
  52. "卓尔游侠,兽王,狙击手,风行者,狼人,米拉娜,美杜莎", # 猎人
  53. "蝙蝠骑士,混沌骑士,露娜,亚巴顿,全能骑士,龙骑士", # 骑士
  54. "暗影萨满,天穹守望者,干扰者", # 萨满
  55. "术士,巫医,剧毒术士,影魔,炼金术士,瘟疫法师,谜团", # 术士
  56. "小小,巨牙海民,斧王,主宰,帕吉,斯拉达,潮汐猎人,巨魔战将,昆卡,末日使者", # 勇士
  57. ]
  58. graph_data = ""
  59. for race in races:
  60. chess_list = race.split(",")
  61. graph_data += get_pairs_in_lists(chess_list)
  62. # 将关系图写入文件,将该文件导入Gephi后可显示棋子关系图
  63. print(graph_data)
  64. with open("underlords_chess.csv", "w", encoding='utf-8') as f:
  65. f.write(graph_data)
  66. # 生成词云图
  67. gen_wordcloud(graph_data)

Gephi效果图

将以上代码生成的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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/531952
推荐阅读
相关标签
  

闽ICP备14008679号