python生成词云的主要代码
def create_word_cloud(self):
self.save_config()
img_file = 'static/background.jpg' # 设置背景图片
mask_img = imageio.imread(img_file) # 读取背景图片
# 进行分词 jieba将中文的一句分成词语
# word_cut=jieba.cut(word_content)
# 把分词用空格连起来
# word_cut_join=" ".join(word_cut)
word_cut_join = self.myconfig.join_word_cloud() #生成词云图片需要文字
# 生成词云
wc = WordCloud(
font_path='static/font.TTF', # 设置字体
max_words=150, # 词云显示的最大词数
mask=mask_img, # 设置背景图片
background_color=self.myconfig.back_color # 背景颜色
).generate(word_cut_join)
# 识别原先背景的颜色,用于生成的词云颜色
if self.myconfig.is_back_color == '1':
image_color = wordcloud.ImageColorGenerator(mask_img)
wc_color = wc.recolor(color_func=image_color)
# 显示生成的词云图片
plt.imshow(wc)
# 去掉坐标轴
plt.axis('off')
# 将图片保存到本地
plt.savefig('heart_cy.jpg')
plt.show()
备注:
用pyinstaller打包WordCloud需要注意,
1:wordcloud下载的包源文件 wordcloud.py文件内获取‘stopwords.txt‘ 33-35行指定的路径是绝对路径需要改成相对路径
#源文件
FILE = os.path.dirname(__file__)
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
#现修改文件
FILE = os.path.dirname(sys.executable)
FONT_PATH = os.environ.get('FONT_PATH', os.path.join(FILE, 'DroidSansMono.ttf'))
STOPWORDS = set(map(str.strip, open(os.path.join(FILE, 'stopwords')).readlines()))
2:pyinstaller 打包的时候,wordcloud 中 stopwords 文件不会被打包到依赖包中,需要手动添加到 exe 根目录依赖包 wordcloud 中。
ps:用 -F 这种方式打包的同学注意了,同样stopwords文件不会被打包,测试放到exe根目录下面也是无效(有解决方法求告知)
番外篇:
使用pyqt5简单制作生成词云的图形化界面:
生成界面:
源代码:
https://gitee.com/juanzi_5/worlCloud.git