使用Python绘制词云图(自定义形状)

1.使用Python需要事先准备的包

from wordcloud import WordCloud
import os
from os import path
import matplotlib.pyplot as plt
import jieba
from imageio import imread

2.准备一个词云图的背景图片

就是想把词云图生成什么样子的背景,比如下图:

使用Python绘制词云图(自定义形状)_第1张图片

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文件

使用Python绘制词云图(自定义形状)_第2张图片

使用Python绘制词云图(自定义形状)_第3张图片

找到34行,默认是DrodiSansMono.ttf这个字体不满足中文的

所以要在这里进行字体文件更换,更换成中文的即可,可以自己在网上下载,也可以使用系统自带的字体。

我是使用系统自带的字体文件。

2.找到系统中支持中文的字体文件

使用Python绘制词云图(自定义形状)_第4张图片

这里面支持中文 ,随便复制一个到第一步骤中,如下所示:

使用Python绘制词云图(自定义形状)_第5张图片

然后在34行,替换成这个文件即可

FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'simsun.ttc'))

,再重新运行代码,就可以生成中文的词云图了,如下所示:

使用Python绘制词云图(自定义形状)_第6张图片

你可能感兴趣的:(Python,NLP,python,词云图)