鬼吹灯文本挖掘2:wordcloud 词云展示 鬼吹灯文本挖掘3:关键词提取和使用sklearn 计算TF-IDF矩阵

鬼吹灯文本挖掘1:jieba分词和CountVectorizer向量化

鬼吹灯文本挖掘2:wordcloud 词云展示

鬼吹灯文本挖掘3:关键词提取和使用sklearn 计算TF-IDF矩阵


1.  准备数据:具体可参考前一篇分析:鬼吹灯文本挖掘1

     得到gcd1_words_list,每个元素就是一个章节分词后合并按空格分割的字符串,这样的格式才符合wordcloud的使用要求。



2. 快速生成词云

    其中font_path参数可传入本地安装的字体;width和height参数为显示词云图片的宽和高;

    mode: string (default='RGB'),当参数为'RGBA' 并且backgroud_color不为空时,背景为透明

    backgroud_color: color value (default='black'),背景颜色,可设置'red', 'white'等

    stopwords: 即停用词,可传入自定义的停用词词典,如果为空时,则使用内置的stopwords

    max_words: number (默认为200), 要显示的词的最大个数

    prefer_horizontal: float (默认0.9),词语水平方向排版出现的概率

import wordcloud
import matplotlib.pyplot as plt
myfont = r'C:\Windows\Fonts\simkai.ttf'   # 获取本地已安装字体

cloudobj = wordcloud.WordCloud(font_path=myfont,width=1200,prefer_horizontal=0.9, height=800,\
                               mode='RGBA',background_color=None,stopwords=stop_words_dict, \
                               max_words=100).generate(' '.join(gcd1_words_list))
plt.imshow(cloudobj)
plt.show()


3. 更多参数设置

      (1) mask : nd-array or None (default=None) #如果参数为空,则使用二维遮罩绘制词云。如果 mask 非空,设置的宽高值将被忽略,遮罩形状被 mask 取代。除全白(#FFFFFF)的部分将不会绘制,其余部分会用于绘制词云。如:bg_pic = imread('读取一张图片.png'),背景图片的画布一定要设置为白色(#FFFFFF),然后显示的形状为不是白色的其他颜色。可以用ps工具将自己要显示的形状复制到一个纯白色的画布上再保存,就ok了。此例中,在中国地图内显示词云。

     (2)先通过imread()读取图片,使用wordcloud.ImageColorGenerator()获取图片的颜色,再使用cloudobj.recolor()重置词云字体的颜色为读取图片的色系。

     (3)plt.axis('off') 可设置不显示坐标轴。

from imageio import imwrite,imread
my_mask = imread('G:\\自学笔记\\学习笔记:Python数据分析--玩转文本挖掘\\PythonData\\chineseMap.jpg')
cloudobj = wordcloud.WordCloud(font_path=myfont, mask=my_mask, max_words=100,\
                               mode='RGBA', background_color=None).generate(gcd1_words_list[15])
imgobj = imread('G:\\自学笔记\\学习笔记:Python数据分析--玩转文本挖掘\\PythonData\\IMG_9475.jpg')
image_colors = wordcloud.ImageColorGenerator(imgobj)      # 获取图片颜色
cloudobj.recolor(color_func=image_colors)     # 重置词云颜色

plt.imshow(cloudobj)
plt.axis('off')
plt.show()
plt.close()


4. 保存已生成的词云



5. 设置指定词的颜色

    如下例子,['插队','女尸','军阀','身上']显示的就是蓝色色系,['胖子','胡国华','孙先生','棺材']是红色色系,其余的都偏绿色

# 指定分组色系
color_to_words = {
                'blue':['插队','女尸','军阀','身上'],
                'red':['胖子','胡国华','孙先生','棺材']
}
default_color = 'green'     #其余单词的默认颜色

grouped_color_func = GroupedColorFunc(color_to_words,default_color)

cloudobj.recolor(color_func=grouped_color_func)

plt.imshow(cloudobj)
plt.axis('off')
plt.show()
plt.close()

猜你喜欢

转载自blog.csdn.net/zhuzuwei/article/details/80766563
今日推荐