笔者菜鸡,今天学了一下,写个总结,若有错误欢迎指出。
首先,遇到了几个问题,如下(环境是mac):
1.安装wordcloud、jieba包失败
解决:一开始笔者是在终端 输入命令 conda install jieba,安装失败,最后用了pip install jieba (试了两次,第二次安装成功)
2.字符编码utf-8问题
UnicodeDecodeError: 'utf-8' codec can't decode byte 报错
在公司一直用的windows,在pycharm下编写,这次在家用自己电脑就出现了问题,查了好多资料,解决方法写在其他博客里了。如下:
https://blog.csdn.net/qingfudian5382/article/details/89787934
3.显示效果不好
有两个原因:emmm图选的不好和字太少
可以优先找图片清晰和紧贴边框的图
4.字体路径
如果词云需要展示的有中文字体,就需要添加字体路径。
mac默认字体路径在:/System/Library/Fonts 下
准备工作:
1.安装好wordcloud、jieba包
2.准备一个txt文件,里面写的是生成词云的内容
3.准备生成词云的背景图片
先贴效果图:
然后是处理过文字颜色的词云图(选取的背景图片的颜色),和用photoshop随手做了个好丑的原背景图片素材:)
好了,接下来贴代码(代码里面都写了注释):
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Created on Fri May 3 15:08:46 2019
@author: afra
"""
# 导包
from os import path
import jieba
import numpy as np
import PIL .Image as image
from wordcloud import WordCloud,ImageColorGenerator
import matplotlib.pyplot as plt
# func1 分词方法
def func1(text):
word_list = jieba.cut(text)
result = " ".join(word_list)
return result
# 读取文件
__file__ = "/Users/afra/Desktop/"
d = path.dirname(__file__)
text = open(path.join(d, 'test3.txt')).read()
#print(text)
text = func1(text)
mask = np.array(image.open("/Users/afra/Desktop/22222.jpg"))
# 绘制词云图
wc = WordCloud(
font_path = "/System/Library/Fonts/STHeiti Medium.ttc",
mask = mask,
background_color='white',
max_words = 100,
width = 500,
height = 500,
max_font_size=50,
random_state=8,
scale = 4
)
wc.generate(text)
# 保存图片
wc.to_file('result.png')
# 展示
plt.imshow(wc, interpolation="bilinear")
plt.axis("off")
plt.figure()
# 取背景颜色得到的文字词云
image_colors = ImageColorGenerator(mask)
plt.imshow(wc.recolor(color_func=image_colors), interpolation="bilinear")
plt.axis("off")
plt.figure()
# 原图
plt.imshow(mask, cmap=plt.cm.gray, interpolation="bilinear")
plt.axis("off")
plt.show()
最后
1.分词的处理简单用了库里的方法,没有更细致的处理,以后有时间还是要学习一下,处理一下。
2.可以在一个很大的有很多内容的文件,根据出现词的频率来生成词云,这个以后有时间也要研究学习一下。
谢谢观看!有错误或者有更好的思路,欢迎交流!