云图详细解析笔记
说明:本文是参看大牛代码后总结的笔记,不清楚的地方可参看大牛源码
大牛源码地址:https://www.zhihu.com/question/28975391/answer/100796070
生成云图的主要函数为: WordCloud方法里面的generate函数
eg: my_wordcloud=WordCloud().generate(txt)
txt:将要显示的文字
WordCloud():wordcloud方法,里面的参数可以配置
eg: wordcloud = WordCloud(font_path=path, background_color="black", margin=5, width=1800, height=800,mask=alice_mask,max_words=2000,max_font_size=60,random_state=42)
wordcloud = wordcloud.generate(txt)
mask 英语意思为面具,这里就是在云图上面套上这样一个面具,让其显示为面具图片的形状
和词云图相关的知识
1、文字清洗
2、结巴分词
3、去除无用的词
4、PIL包打开面具图片
--------------------------------------------------
文字清洗
1、去除多余的符号,利用re包筛选出中文汉字
import re
pattern=re.compile('[\u4e00-\u9fa5]')
ls=re.findall(pattern,txt字符串类型),返回列表类型,单个中文字
1.2、将单个字组合成为没有空格的字符串,用join比较方便,当然也可以用for循环实现
words_str=''.join(ls)
2、结巴分词 import jieba jieba.cut(words_str),返回生成器对象,需要转化成list类型
cleaned_word=list(jieba.cut(words_str))
3、去除无用的词(比如,的,很 诸如此类的副词)
去除无用词需要用到 stopwords.txt(可以在网上下载),将stopwords.txt中存在的词,从cleaned_word中剔除
stopwords=pd.read_csv("D:\Python34\stopwords.txt",index_col=False,quoting=3,sep="\t",names=['stopword'], encoding='gbk')
words_df=words_df[~words_df.segment.isin(stopwords.stopword)]
words_df为DateFrame类型,segment为中文这一列的名字,或者叫索引
4、PIL包打开面具图片
alice_mask = np.array(PIL.Image.open('D:/Python34/coding/pachong/1.png')) 打开一幅图片,将图片矩阵数据赋值给WorldCloud的参数mask
wordcloud = WordCloud(font_path=path, background_color="black", margin=5, width=1800, height=800,mask=alice_mask,max_words=2000,max_font_size=60,random_state=42)
用wordcloud.generate(txt)方法显示词云图 。
5、最后可以将制作的云图放入本地磁盘
wordcloud.to_file('d:/jieba/she2.jpg')
注: 如果词放在txt文件里面,则首先需要将文件打开为 字符串类型 txt=open(r'D:\Python34\coding\pachong\neiwu.txt','r').read()