文章目录
- 前言
- 一、需要准备什么?
- 二、代码实现(示例)
- 三、读入数据
- 四、结果展示
- 五、修改词云颜色后的运行结果展示:
- 总结
前言
想必大家有一个问题:什么是词云呢?
词云又叫名字云,是对文本数据中出现频率较高的“关键词”在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思。
网页上有许多词云的效果图:
一、需要准备什么?
python代码运行需要安装第三方模块pillow(PIL)、matplotlib、jieba、wordcloud 和numpy
如果安装库有遇到问题,可以参见下面的解决办法,在windows上测试可用。
python学习之报错:ModuleNotFoundError: No module named ‘pandas‘解决方法
python学习之数据分析和图表的应用(第一部分)报错:ModuleNotFoundError: No module named ‘wordcloud’
二、代码实现(示例)
代码如下(示例):
#导入matplotlib模块pyplot函数并使用as给函数起个别名plt
import matplotlib.pyplot as plt
import jieba #导入jieba分词模块
import wordcloud #导入词云图模块
from wordcloud import ImageColorGenerator
import numpy as np #导入numpy模块
from PIL import Image #从PIL模块中导入Image函数
# 读取文本文件
text = open('elsa.txt','r').read() #elsa.txt可以改成自己的文件
cut_text = jieba.cut(text) #分词处理
word = ' '.join(cut_text) #以空格分割文本
#读取图片
pic = np.array(Image.open('aa.png'))
image_colors = ImageColorGenerator(pic) #生成图片颜色中的颜色
wd = wordcloud.WordCloud(
mask=pic, #背景图形,如果根据图片绘制,则需要设置
font_path='simhei.ttf', #可以改成自己喜欢的字体
background_color='white', #词云图背景颜色可以换成自己喜欢的颜色
)
wd.generate(word) #生成词云
# 图片颜色渲染词云图的颜色,用color_func指定
plt.imshow(wd.recolor(color_func=image_colors), interpolation='bilinear')
plt.axis('off')#关闭显示x轴、y轴下标
plt.show()
三、读入数据
下面咱们解析一下代码块:
1、导入了画图模块,词云生成模块和jieba的分词模块;
2、读取本地的文件,使用jieba进行分词,并对分词的结果以空格隔开;
3、读取指定图片图形文件,并显示字体、颜色等参数进行配置;
4、生成词云,并显示出来
这只是一个简单得不能再简单得编程,实现的效果也非常简单。这也是我喜欢python的一个原因吧,简洁明快。
但是Python是一门开源的语言,这时候就体现出开源的特性了,任何人都能对一个项目加以修改,使项目不断的完善。
Github上有许多开源的项目,有一个做词云的项目,大家可以去瞅瞅源码:
https://github.com/amueller/word_cloud
咱们可以直接进入wordcloud.py 源码进行字体,词云效果进行修改。
四、结果展示
五、修改词云颜色后的运行结果展示:
color_list=['black','red']
#多种颜色
'''color_list=['LightCoral','RosyBrown','IndianRed','Red','Brown','FireBrick'
,'DarkRed','Maroon','Gainsboro','LightGray'
,'Silver','DarkGray','Gray','DimGray','Black']'''
colormap=colors.ListedColormap(color_list) #matplotlib色图
总结
以上就是python词云生成的介绍了,源码中实现了词云生成的基本步骤,在参数设置方面,可以根据自己的需求设置不同的字体、形状和颜色,以及词云的大小。
有兴趣的小伙伴可以看看Github上有许多开源的项目,有一个做词云的项目,大家可以去瞅瞅源码:github地址
也可以直接进入wordcloud.py 源码进行字体,词云效果进行修改。