首先安装如下的第三方库:jieba、wordcloud、matplotlib
pip install jieba
pip install wordcloud
pip install matplotlib
如果你的使用的是anaconda3,那么只需要下载jieba和wordcloud即可,matplotlib以包含在anaconda3里面
创建一个有文本内容的文本文件(我创建的是.txt文件)
可以创建py文件了,导入想要绘制词云的文本文件:
#导入一个文本文件
text = open(r'E:\11.txt',encoding='gbk')
mylist = list(text)
然后进行遍历,连接,计算词频,设置词云样式:
#对mylist进行遍历,并将其做分词切割后做成列表
word_list = [''.join(jieba.cut(sentence)) for sentence in mylist]
#将word_list内的元素用空格连接起来,以便于计算词频
new_text = ''.join(word_list)
#设置词云的字体和背景颜色
wordcloud = WordCloud(font_path='simhei.ttf',background_color='black').generate(new_text)
最后附上效果图与代码:
import jieba
from wordcloud import WordCloud
import matplotlib.pyplot as plt
#导入一个文本文件
text = open(r'E:\11.txt',encoding='gbk')
mylist = list(text)
#对mylist进行遍历,并将其做分词切割后做成列表
word_list = [''.join(jieba.cut(sentence)) for sentence in mylist]
#将word_list内的元素用空格连接起来,以便于计算词频
new_text = ''.join(word_list)
#设置词云的字体和背景颜色
wordcloud = WordCloud(font_path='simhei.ttf',background_color='black').generate(new_text)
plt.imshow(wordcloud)
plt.axis('off')
plt.show()
—————————————————————————————————————————————————
背景轮廓词云图:(根据上面的例子改编)
以这张图为背景:
然后代码的话在上面代码的基础上添加几行即可:
#在最上方加上import imageio和from collections import Counter
import imageio
from collections import Counter
......
......
#根据词频生成词云
con_words = [x for x in jieba.cut(new_text) if len(x) >= 2]
fq = Counter(con_words).most_common()
fq = dict(fq)
#导入背景图片,注意路径
pac_mask = imageio.imread(r'e:\boy.png')
...
...
效果图:
完整代码:
import jieba
from wordcloud import WordCloud
import imageio
import matplotlib.pyplot as plt
from collections import Counter
#导入一个文本文件
content = open(r'e:\11.txt',encoding='gbk')
mylist = list(content)
#对mylist进行遍历,并将其做分词切割后做成列表
word_list = [''.join(jieba.cut(sentence)) for sentence in mylist]
#将word_list内的元素用空格连接起来,以便于计算词频
new_text = ''.join(word_list)
#根据词频生成词云
con_words = [x for x in jieba.cut(new_text) if len(x) >= 2]
fq = Counter(con_words).most_common()
fq = dict(fq)
#导入背景图片,注意路径
pac_mask = imageio.imread(r'e:\boy.png')
#设置词云的字体和背景颜色
wc = WordCloud(font_path='simhei.ttf',background_color='white',max_words=2000,mask=pac_mask).fit_words(fq)
plt.imshow(wc)
plt.axis('off')
plt.show()
#把词云图保存下来
wc.to_file('e:\\24.png')