词云美化包括对词云的形状、颜色分布等等进行特殊要求。
在文本挖掘HW3中,我们已经对一篇有关燃料电池的文章进行了词频统计和构建了词云图,接下来就是词云美化。
import os
import os.path
import codecs
import pandas as pd
import numpy as np
import jieba
#导入文本数据统计词频
f = codecs.open('C:\\Users\\Data Engineer\\Desktop\\xx\\2.4 词云绘制\\2.4\\fuelcell.txt', 'r', 'gbk')
txt=f.read()
txtcontent=jieba.cut(txt)
contents=[]
for content in txtcontent:
if content not in stopwords.stopword.values and len(content.strip())>1:
contents.append(content)
contentDataFrame=pd.DataFrame({'content':contents})
contentStat=contentDataFrame.groupby(by='content')['content'].agg({'计数':np.size}).reset_index().sort_values('计数',ascending=False)
接下来,绘制规定形状的词云图
网上搜了一张图作为背景。
很有新能源的味道,有木有
from scipy.misc import imread #读取图片
from wordcloud import ImageColorGenerator #导入图片中的颜色分布
bimg = imread("C:\\Users\\Data Engineer\\Desktop\\xx\\2.5 词云美化\\timg.jpg")
image_colors = ImageColorGenerator(bimg)
wordcloud=WordCloud(font_path='C:\\Users\\Data Engineer\\Desktop\\xx\\2.4 词云绘制\\2.4\\simhei.ttf',background_color='black',mask=bimg,max_font_size=300) #这里的mask就是选择背景的过程
words = contentStat.set_index('content').to_dict()
wordcloud.fit_words(words['计数'])
plt.show(wordcloud.recolor(color_func=image_colors))
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
效果还是可以的有木有