当前位置:   article > 正文

使用Python绘制各种方法的词云图_词云图python

词云图python

  1. import jieba
  2. from PIL import Image
  3. from wordcloud import WordCloud
  4. import numpy as np
  5. import matplotlib.pyplot as plt
  6. # 我们导入文本内容,并且去除掉一下换行符和空格,代码如下
  7. text = open(r"《冰与火之歌》第1卷权力的游戏.txt",encoding='gbk').read()
  8. text = text.replace('\n',"").replace("\u3000","")
  9. # 我们需要将其分成一个个的词,这个时候就需要用到jieba模块了,代码如下
  10. text_cut = jieba.lcut(text)
  11. # 将分好的词用某个符号分割开连成字符串
  12. text_cut = ' '.join(text_cut)
  13. # 结果当中或许存在着不少我们不需要看的、无关紧要的内容,这个时候就需要用到停用词
  14. stop_words = open(r"baidu_stopwords.txt",encoding='utf-8').read().split("\n")
  15. # # 绘制词云图的核心代码
  16. word_cloud = WordCloud(font_path="simsun.ttc", # 设置词云字体
  17. background_color="white",# 词云图的背景颜色
  18. stopwords=stop_words) # 去掉的停词
  19. word_cloud.generate(text_cut)
  20. image = word_cloud.to_image()
  21. image.show()
  22. word_cloud.to_file("1.png")

 这样一张极其简单的词云图算是做好了,当然我们可以给它添加一个背景图片,例如下面这张图片,

 主要需要添加的代码如下所示

  1. background = Image.open(r"5.png")
  2. graph = np.array(background)
  3. word_cloud = WordCloud(font_path="simsun.ttc", # 设置词云字体
  4. background_color="white", # 词云图的背景颜色
  5. stopwords=stop_words,
  6. mask = graph) # 去掉的停词
  7. word_cloud.generate(text_cut)
  8. image = word_cloud.to_image()
  9. image.show()
  10. word_cloud.to_file("2.png")

 除此之外,还有另外一个模块stylecloud绘制出来的词云图也是非常酷炫的,其中我们主要是用到下面这个函数

  1. stylecloud.gen_stylecloud(text=text_cut,
  2. palette='tableau.BlueRed_6', #调色板
  3. icon_name='fas fa-apple-alt', #词云图的形状
  4. font_path=r'田英章楷书3500字.ttf', #字体风格
  5. background_color="white",
  6. max_font_size=200, #最大的字号
  7. max_words=2000, #可以容纳下的最大单词数量
  8. stopwords=True,
  9. custom_stopwords=stop_words,
  10. output_name='3.png')

 最后我们来看一下如何用Pyecharts模块来进行词云图的绘制,代码如下

  1. from pyecharts import options as opts
  2. from pyecharts.charts import Page, WordCloud
  3. words = [
  4. ("爵士", 933),
  5. ("奈德", 784),
  6. ("国王", 666),
  7. ("琼恩", 629),
  8. ("提利昂", 595),
  9. ("布兰", 547),
  10. ("父亲", 527),
  11. ("凯特琳", 525),
  12. ("兰尼斯特", 510),
  13. ("史塔克", 480),
  14. ("艾丽娅", 416)
  15. ]
  16. c = (WordCloud()
  17. .add("", words, word_size_range=[20, 100])
  18. .set_global_opts(title_opts=opts.TitleOpts(title="基本示例"))
  19. )
  20. c.render("1.html")

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

闽ICP备14008679号