python 基于 wordcloud + jieba + matplotlib 生成词云
词云##

词云是啥?词云突出一个数据可视化,酷炫。以前以为很复杂,不想python已经有成熟的工具来做词云。而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑。准备好了吗,快跟我一起动手吧
模块##
本案例基于python3.6, 相关模块如下,安装都是直接 pip install <模块名>:
- wordcloud 作用如其名。本例核心模块,它把我们带权重的关键词渲染成词云
- matplotlib 绘图模块,主要作用是把wordcloud生成的图片绘制出来并在窗口展示
- numpy 图像处理模块,读取图片生成像素矩阵
- PIL (pip install pillow) 图片处理模块, 打开初始化图片
- jieba 牛逼的分词模块,因为我是从一个txt文本里提取关键词,所以需要 jieba 来分词并统计词频。如果是已经有了现成的数据,不再需要它
代码##
# -*- coding=utf8 -*-
import matplotlib.pyplot as plt
import jieba.analyse
import numpy
from PIL import Image
from wordcloud import WordCloud, ImageColorGenerator
def readTxt(file, encoding='utf8'):
"""
:param file:
:param encoding:
:return:
"""
with open(txt_file, 'r', encoding='utf16') as f:
txt = f.read()
return txt
def textDict(content):
"""
jieba 提取1000个关键词及其比重
:param content:
:return:
"""
result = jieba.analyse.textrank(content, topK=1000, withWeight=True)
# 转化为比重字典
keywords = dict()
for i in result:
keywords[i[0]] = i[1]
return keywords
def renderWordCloud(keywords, sourceImg):
# 获取图片资源
image = Image.open(sourceImg)
# 转为像素矩阵
graph = numpy.array(image)
# wordcloud 默认字体库不支持中文,这里自己选取中文字体
fontPath = 'C:/Windows/Fonts/SIMLI.TTF'
#fontPath = 'C:/Windows/Fonts/mplus-1mn-regular.ttf'
wc = WordCloud(
font_path=fontPath,
background_color='white',
max_words=1000,
# 使用的词云模板背景
mask=graph
)
# 基于关键词信息生成词云
wc.generate_from_frequencies(keywords)
# 读取模板图片的颜色
image_color = ImageColorGenerator(graph)
# 生成词云图
plt.imshow(wc)
# 用模板图片的颜色覆盖
plt.imshow(wc.recolor(color_func=image_color))
# 关闭图像坐标系
plt.axis('off')
# 显示图片--在窗口显示
plt.show()
txt_file = 'C:/Users/KF/Downloads/《围城》钱钟书(完美版).TXT'
source_img = 'C:/Users/KF/Pictures/ul1241-2001.jpg'
#source_img = 'C:/Users/KF/Pictures/微信图片_20170710102042.jpg'
#source_img = 'C:/Users/KF/Pictures/微信图片_20170710102054.jpg'
#source_img = 'E:\DOC\Carl\wallpapers\d250038c4fde4ea7f36ebe010a7b58ca.jpg'
content = readTxt(txt_file)
keywords = textDict(content)
renderWordCloud(keywords, source_img)
成果##

python 基于 wordcloud + jieba + matplotlib 生成词云的更多相关文章
- Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)
一.各库功能说明 pdfminer----用于读取pdf文件的内容,python3安装pdfminer3k jieba----用于中文分词 wordcloud----用于生成词云 matplotlib ...
- 爬虫之绘图matplotlib与词云(七)
1 绘制条形图 import matplotlib # 数据可视化 from matplotlib import pyplot as plt # 配置字体 matplotlib.rcParams[&q ...
- 【python3】爬取简书评论生成词云
一.起因: 昨天在简书上看到这么一篇文章<中国的父母,大都有毛病>,看完之后个人是比较认同作者的观点. 不过,翻了下评论,发现评论区争议颇大,基本两极化.好奇,想看看整体的评论是个什么样, ...
- python使用matplotlib画图,jieba分词、词云、selenuium、图片、音频、视频、文字识别、人脸识别
一.使用matplotlib画图 关注公众号"轻松学编程"了解更多. 使用matplotlib画柱形图 import matplotlib from matplotlib impo ...
- wordcloud + jieba 生成词云
利用jieba库和wordcloud生成中文词云. jieba库:中文分词第三方库 分词原理: 利用中文词库,确定汉字之间的关联概率,关联概率大的生成词组 三种分词模式: 1.精确模式:把文本精确的切 ...
- 根据词频生成词云(Python wordcloud实现)
网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...
- 用python爬取微博数据并生成词云
很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,放在今天应该比较应景. 一年一度的虐汪节,是继续蹲在角落默 ...
- 用Python生成词云
词云以词语为基本单元,根据词语在文本中出现的频率设计不同大小的形状以形成视觉上的不同效果,从而使读者只要“一瞥“即可领略文本的主旨.以下是一个词云的简单示例: import jieba from wo ...
- 已知词频生成词云图(数据库到生成词云)--generate_from_frequencies(WordCloud)
词云图是根据词出现的频率生成词云,词的字体大小表现了其频率大小. 写在前面: 用wc.generate(text)直接生成词频的方法使用很多,所以不再赘述. 但是对于根据generate_from_f ...
随机推荐
- EF学习 开始操作02
历史版本和未来版本 本文介绍有关实体框架 (EF5) 最新版本的信息,其中大部分内容也适用于旧版本.有关完整版本列表以及各版本引入的功能的详细信息,请参阅 “版本历史”. “历史版本”页面包含实体框架 ...
- Unity3D中Mathf数学运算函数总结
引入: 看到一个案例注意到函数Mathf.SmoothDamp的使用,游戏中用于做相机的缓冲跟踪和boss直升机跟踪士兵.该函数是Unity3D中Mathf数学运算函数中的一个.一些游戏使用了smoo ...
- 9 python 数据类型—字典
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据.python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可 ...
- PHP获取当前日期及本周一是几月几号的方法
这篇文章主要介绍了PHP获取当前日期及本周一是几月几号的方法,涉及php时间戳.日期转换与运算相关操作技巧,需要的朋友可以参考下 本文实例讲述了PHP获取当前日期及本周一是几月几号的方法.分享给大家供 ...
- 关于MFC预处理命令
MFC程序生成EXE文件的过程是:预处理-编译-链接-打包生成exe文件.(预编译是编译过程,即将一些常用的不经常改变的文件先进行编译处理生成中间文件,以节省时间,它不属于预处理,在VS项目属性的C/ ...
- 动态规划 两个字符串之间的编辑距离 leetcode72
public static int minDistance(String word1, String word2) { char[] s1 = word1.toCharArray(); char[] ...
- Android SQLite学习指南
一.SQLite简介 在Android平台上,集成了一个嵌入式关系型数据库—SQLite,SQLite3支持 NULL.INTEGER.REAL(浮点数字).TEXT(字符串文本)和BLOB(二进制对 ...
- 2.4 AppDelegate 的 3 个生命周期
Classed/AppDelegate.cpp 文件内容如下: #include "cocos2d.h" #include "CCEGLView.h" #inc ...
- Linux mount指令
-o,是指option,可以指定username,password:当时我们就碰到一个坎,如何来避免输入用户名密码,其实本质并不是避免输入用户名米吗,而是某种可知的方式来进行权限控制:解决的方式就是采 ...
- 洛谷【P1090】合并果子&&洛谷【P1334】瑞瑞的木板
浅谈堆:https://www.cnblogs.com/AKMer/p/10284629.html 合并果子题目传送门:https://www.luogu.org/problemnew/show/P1 ...