生成词云

411 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第11天,点击查看活动详情

一、生成词云

1.1 不带背景图

生成词云时,wordcloud 默认会以空格或标点为分隔符对目标文本进行分词处理。对于中文文本,分词处理需要由用户来完成。一般步骤是先将文本分词处理,然后以空格拼接,再调用wordcloud库函数。

处理中文时还需要指定中文字体。 例如,选择了微软雅黑字体(msyh.ttf)作为显示效果,需要将该字体文件与代码存放在同一目录下或在字体文件名前增加完整路径。

 import jieba
 import wordcloud
 from wordcloud import WordCloud
 txt = '弱小的人,才习惯,嘲讽和否定,而内心,强大的人,从不吝啬赞美和鼓励!我们就是后浪,奔涌吧!后浪,奔涌吧!'
 words = jieba.lcut(txt)     #精确分词
 newtxt = ''.join(words)    #空格拼接
 wordcloud = WordCloud(font_path = "./OPPOSans-Bold.ttf").generate(newtxt)
 wordcloud.to_file('中文词云图.jpg')

结果:

image.png

1.2 生成带背景图的词云

使用带有透明背景的图:

透明词云背景图.png

此文件与代码文件存在同一目录下

准备一个txt文本文件(文件内容是一篇英文)(注意:txt文档存放的位置也是与代码文件在一个地方)

image.png

 from wordcloud import WordCloud
 import matplotlib.pyplot as plt
 from PIL import Image
 import numpy as np
 mask = np.array(Image.open("background.png"))
 ​
 ​
 f = open('English.txt','r',encoding = 'utf-8')
 txt = f.read()
 f.close
 wordcloud = WordCloud(background_color="white",\
                       width = 800,\
                       height = 600,\
                       max_words = 200,\
                       max_font_size = 80,\
                       mask = mask,\
                       contour_width = 3,\
                       contour_color = 'steelblue'
                       ).generate(txt)
 wordcloud.to_file('English_词云图.png')

有背景的词云图效果(不知道为什么效果不是很好)

image.png

换一个背景图:

image.png

image.png

这张图片出来的效果就很好,综上,背景图的效果与自己选取的背景图有关系。

带背景的中文词云图

 import jieba
 import numpy as np
 from PIL import Image
 import matplotlib.pyplot as plt
 from wordcloud import WordCloud
 ​
 def trans_ch(txt):
   words = jieba.lcut(txt)
   newtxt = ''.join(words)
   return newtxt
 ​
 ​
 f = open('Chinese.txt','r',encoding = 'utf-8')     #将你的文本文件名与此句的'maozedong.txt'替换
 txt = f.read()
 f.close
 txt = trans_ch(txt)
 mask = np.array(Image.open("background1.png"))               #将你的背景图片名与此句的"love.png"替换
 wordcloud = WordCloud(background_color="white",\
                       width = 800,\
                       height = 600,\
                       max_words = 200,\
                       max_font_size = 80,\
                       mask = mask,\
                       contour_width = 4,\
                       contour_color = 'steelblue',\
                         font_path =  "OPPOSans-Bold.ttf"  #设置中文字体
                       ).generate(txt)
 wordcloud.to_file('love_词云图.png')

image.png

WordCound 的基础语法

常用功能:

  • font_path:在图形中使用的字体,默认使用系统字体
  • width/height=200:图形的宽度/高度
  • max_words =200:需要绘制的最多的词条数
  • stopwords = none :停用词列表,不指定时会使用默认的停用词列表

字体设置:

  • min_font_size = 4 / max_font_size = None :字符大小范围
  • font_step =1 :字号增加的步长
  • relative_scaling=.5:词条频数比例和字号大小比例的换算关系,默认为50%
  • prefer_horizontal = 0.90:图中词条水平显示的比例

颜色设定:

  • background_color = 'black':图形背景颜色
  • mode = "RGB" : 图形颜色编码,如果指定为“RGBA“且颜色为None 时,背景色为透明
  • color_func = None :生成新颜色的函数,使用Matplotlib 的 colormap

保存词云

wordcloud.to_file("ciyun.png") 可以保存最高精度的图形

 wordcloud.to_file("ciyun.png")