1.使用Python需要事先准备的包
from wordcloud import WordCloud
import os
from os import path
import matplotlib.pyplot as plt
import jieba
from imageio import imread
2.准备一个词云图的背景图片
就是想把词云图生成什么样子的背景,比如下图:
3.代码如下
from wordcloud import WordCloud
import os
from os import path
import matplotlib.pyplot as plt
import jieba
from imageio import imread
#读取图片
bg_pic = imread('C:\\Users\\Administrator\\Desktop\\0.png')
comment_text=open('C:\\Users\\Administrator\\Desktop\\test.txt','r').read()
cut_text=jieba.lcut(comment_text)
print(cut_text)
cut_text=filter(lambda x:len(x)>1,cut_text )
cut_text=list(cut_text)
cut_text=' '.join(cut_text)
print(cut_text)
#第一个参数 字体路径
cloud=WordCloud(
background_color='black',
width=700,
height=300,
max_words=2000,
max_font_size=40,
mask=bg_pic#该属性 字体显示形状 在非白色部分显示!!!
)
#放入的是文本文件(必须是分词后的) 就是字符串
word_cloud=cloud.generate_from_text(cut_text)
plt.imshow(word_cloud)
plt.axis('off')#去掉X Y 轴坐标
plt.show()
bg_pic就是我们要准备的词云图背景
comment_text 就是我们的文本文件。
上面的代码可以生成一个好看的词云图,但是如果是英文就没什么问题,可以正常生成,如果是中文的话,就会出现乱码的情况。
解决办法:
1.打开wordcloud.py文件
找到34行,默认是DrodiSansMono.ttf这个字体不满足中文的
所以要在这里进行字体文件更换,更换成中文的即可,可以自己在网上下载,也可以使用系统自带的字体。
我是使用系统自带的字体文件。
2.找到系统中支持中文的字体文件
这里面支持中文 ,随便复制一个到第一步骤中,如下所示:
然后在34行,替换成这个文件即可
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'simsun.ttc'))
,再重新运行代码,就可以生成中文的词云图了,如下所示: