版权声明:转载附链接哦。/weixin_43886356/article/details/86711292
此篇教程划分为两种情况,原文本为汉字和原文本为英文,教程最后有实例提供参考。
Part1 原文本为汉字
若原文本为汉字,则需要指定WordCloud方法中的font_path为要使用的汉字字体路径,因为默认的wordcloud字体DroidSansMono.ttf 不支持汉字,且指定的字体文件需要放在wordcloud安装的文件夹下,我电脑中的路径为D:\Program Files\Python37\Lib\site-packages\wordcloud\simhei.ttf
否则生成的词云图片上会是彩色方框,而不会出现汉字。
源代码如下:
import jieba
from wordcloud import WordCloud
from scipy.misc import imread
mask= imread('picture.png') #此处为使用遮罩的情况,即生成的词云形状
file = open("sample.txt", "r", encoding='utf-8')
content = file.read()
words=jieba.lcut(content) # 使用jieba进行精确分词获取词语列表
txt=" ".join(words) #使用空格拼接获得字符串
wordcloud = WordCloud(background_color="white", # 词云图片的背景颜色
width=800, # 词云图片的宽度,默认400像素
height=600, # 词云图片的高度,默认200像素
font_path='D:\Program Files\Python37\Lib\site-packages\wordcloud\simhei.TTF', # 词云指定字体文件的完整路径
max_words=200, #词云图中最大词数,默认200
max_font_size=80, # 词云图中最大的字体字号,默认None,根据高度自动调节
min_font_size=20, # 词云图中最小的字体字号,默认4号
font_step=1, # 词云图中字号步进间隔,默认1
mask=mask, #词云形状,默认None,即方形图
).generate(txt)# 由txt文本生成词云
wordcloud.to_file("sample.png")# 将词云图保存为名为sample的文件
Part2 原文本为英文
from wordcloud import WordCloud
from scipy.misc import imread
mask= imread('picture.png') #此处为使用遮罩的情况,即生成的词云形状
file = open("sample.txt", "r", encoding='utf-8')
txt = file.read()
wordcloud = WordCloud(background_color="white", # 词云图片的背景颜色
width=800, # 词云图片的宽度,默认400像素
height=600, # 词云图片的高度,默认200像素
font_path='D:\Program Files\Python37\Lib\site-packages\wordcloud\simhei.TTF', # 词云指定字体文件的完整路径
max_words=200, #词云图中最大词数,默认200
max_font_size=80, # 词云图中最大的字体字号,默认None,根据高度自动调节
min_font_size=20, # 词云图中最小的字体字号,默认4号
font_step=1, # 词云图中字号步进间隔,默认1
mask=mask, #词云形状,默认None,即方形图
).generate(txt)# 由txt文本生成词云
wordcloud.to_file("sample.png")# 将词云图保存为名为sample的文件
mask为遮罩,限定词云的形状,选择图片作为遮罩,图片中白色的部分不显示词,非白色部分显示词。
若遮罩图片为png格式,则使用scipy库:
from scipy.misc import imread
mask= imread('picture.png')
若遮罩图片为jpg格式,则使用matplotlib库:
import matplotlib.pyplot as plt
mask= plt.imread('psb.jpg')
Part3 运行实例
不使用遮罩源代码如下:
运行结果:
使用遮罩:
遮罩图片picture.png如下:
源代码如下:
运行结果如下: