详解Python如何生成词云的方法


Posted in Python onJune 01, 2018

前言

今天教大家用wrodcloud模块来生成词云,我读取了一篇小说并生成了词云,先看一下效果图:

效果图一:

详解Python如何生成词云的方法

效果图二:

详解Python如何生成词云的方法

详解Python如何生成词云的方法

根据效果图分析的还是比较准确的,小说中的主人公就是“程理”,所以出现次数最多。图中有两种模式,一种是默认的模式,另一种是自己添加图片作为背景。下面我就带大家一起来学习怎样去生成词云!

wordcloud的安装

对于新人来说安装wordcloud模块就是一大关,我们一般都是通过Pycharm或者PIP安装的,但是在安装wordcloud时会提示错误,如下:

详解Python如何生成词云的方法

我的解决方法是直接访问下面的网址,根据你的电脑和py版本下载对应的whl文件

https://www.lfd.uci.edu/~gohlke/pythonlibs/#wordcloud

详解Python如何生成词云的方法

下载完成后,把whl文件放在pip路径下,输入下面的代码,记住代码的whl文件名一定是适合你的文件名,我只是举例:

pip install wordcloud-1.4.1-cp36-cp36m-win32.whl

运行后会显示安装成功

详解Python如何生成词云的方法

wordcloud的简单用法

wordcloud的基本方法,看源码如下:

详解Python如何生成词云的方法

各个参数大家应该一看就明白,另外wordcloud还有几个其他方法,比如fit_words,generate(text),to_file(filename)等等都是非常好理解的。

wordcloud生成词云

效果图一的代码:

from wordcloud import WordCloud
import matplotlib.pyplot as plt #绘制图像的模块
import jieba     #jieba分词

path_txt='C://Users/Administrator/Desktop/all.txt'
f = open(path_txt,'r',encoding='UTF-8').read()

# 结巴分词,生成字符串,wordcloud无法直接生成正确的中文词云
cut_text = " ".join(jieba.cut(f))

wordcloud = WordCloud(
 #设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
 font_path="C:/Windows/Fonts/simfang.ttf",
 #设置了背景,宽高
 background_color="white",width=1000,height=880).generate(cut_text)

plt.imshow(wordcloud, interpolation="bilinear")
plt.axis("off")
plt.show()

运行后:

详解Python如何生成词云的方法

效果图二,给词云加上图片背景,代码如下:

from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator
import matplotlib.pyplot as plt
import numpy as np
import jieba
def GetWordCloud():
 path_txt = 'C://Users/Administrator/Desktop/all.txt'
 path_img = "C://Users/Administrator/Desktop/timg.jpg"
 f = open(path_txt, 'r', encoding='UTF-8').read()
 background_image = np.array(Image.open(path_img))
 # 结巴分词,生成字符串,如果不通过分词,无法直接生成正确的中文词云,感兴趣的朋友可以去查一下,有多种分词模式
 #Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
 cut_text = " ".join(jieba.cut(f))

 wordcloud = WordCloud(
  # 设置字体,不然会出现口字乱码,文字的路径是电脑的字体一般路径,可以换成别的
  font_path="C:/Windows/Fonts/simfang.ttf",
  background_color="white",
  # mask参数=图片背景,必须要写上,另外有mask参数再设定宽高是无效的
  mask=background_image).generate(cut_text)
 # 生成颜色值
 image_colors = ImageColorGenerator(background_image)
 # 下面代码表示显示图片
 plt.imshow(wordcloud.recolor(color_func=image_colors), interpolation="bilinear")
 plt.axis("off")
 plt.show()

if __name__ == '__main__':
 GetWordCloud()

运行后:

详解Python如何生成词云的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python实现的简单猜数字游戏
Apr 04 Python
Python的dict字典结构操作方法学习笔记
May 07 Python
Python实现判断并移除列表指定位置元素的方法
Apr 13 Python
python 实现判断ip连通性的方法总结
Apr 22 Python
Jupyter notebook在mac:linux上的配置和远程访问的方法
Jan 14 Python
Python实现字符型图片验证码识别完整过程详解
May 10 Python
python计算无向图节点度的实例代码
Nov 22 Python
Python脚本去除文件的只读性操作
Mar 05 Python
Python基于network模块制作电影人物关系图
Jun 19 Python
Python库安装速度过慢解决方案
Jul 14 Python
Python子进程subpocess原理及用法解析
Jul 16 Python
如何用PyPy让你的Python代码运行得更快
Dec 02 Python
Python实现的个人所得税计算器示例
Jun 01 #Python
Python模拟登录的多种方法(四种)
Jun 01 #Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 #Python
Python爬虫获取图片并下载保存至本地的实例
Jun 01 #Python
python操作mysql代码总结
Jun 01 #Python
Python使用pylab库实现绘制直方图功能示例
Jun 01 #Python
python的格式化输出(format,%)实例详解
Jun 01 #Python
You might like
PHP 手机归属地查询 api
2010/02/08 PHP
摘自织梦CMS的HTTP文件下载类
2015/08/08 PHP
php利用header函数下载各种文件
2016/08/24 PHP
javascript 面向对象编程 聊聊对象的事
2009/09/17 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
javascript弹出层输入框(示例代码)
2013/12/11 Javascript
js 3秒后跳转页面的实现代码
2014/03/10 Javascript
js实现模拟银行卡账号输入显示效果
2015/11/18 Javascript
JavaScript获取各大浏览器信息图示
2015/11/20 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
详解Document.Cookie
2015/12/25 Javascript
AngularJS中实现动画效果的方法
2016/07/28 Javascript
基于bootstrap实现bootstrap中文网巨幕效果
2017/05/02 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
简单快速的实现js计算器功能
2017/08/17 Javascript
node.js之基础加密算法模块crypto详解
2018/09/11 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
[26:40]DOTA2上海特级锦标赛A组资格赛#1 Secret VS MVP.Phx第一局
2016/02/25 DOTA
[02:00]最后,我终于出了辉耀
2018/03/27 DOTA
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
[42:25]EG vs Spirit Supermajor 败者组 BO3 第二场 6.4
2018/06/05 DOTA
python中对list去重的多种方法
2014/09/18 Python
简单介绍Python中的几种数据类型
2016/01/02 Python
解析Python中的生成器及其与迭代器的差异
2016/06/20 Python
Python使用修饰器执行函数的参数检查功能示例
2017/09/26 Python
Python中eval带来的潜在风险代码分析
2017/12/11 Python
Python分割指定页数的pdf文件方法
2018/10/26 Python
python实现微信自动回复及批量添加好友功能
2019/07/03 Python
wxPython修改文本框颜色过程解析
2020/02/14 Python
十佳大学生事迹材料
2014/01/29 职场文书
大型会议接待方案
2014/03/01 职场文书
诉讼财产保全担保书
2014/05/20 职场文书
期中考试复习计划
2015/01/19 职场文书
2015年公司行政后勤工作总结
2015/05/20 职场文书
高中美术教学反思
2016/02/17 职场文书
Mysql基础知识点汇总
2021/05/26 MySQL