开启掘金成长之旅!这是我参与「掘金日新计划 · 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')
结果:
1.2 生成带背景图的词云
使用带有透明背景的图:
此文件与代码文件存在同一目录下
准备一个txt文本文件(文件内容是一篇英文)(注意:txt文档存放的位置也是与代码文件在一个地方)
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')
有背景的词云图效果(不知道为什么效果不是很好)
换一个背景图:
这张图片出来的效果就很好,综上,背景图的效果与自己选取的背景图有关系。
带背景的中文词云图
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')
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")