词云##

词云是啥?词云突出一个数据可视化,酷炫。以前以为很复杂,不想python已经有成熟的工具来做词云。而我们要做的就是准备关键词数据,挑一款字体,挑一张模板图片,非常非常无脑。准备好了吗,快跟我一起动手吧

模块##

本案例基于python3.6, 相关模块如下,安装都是直接 pip install <模块名>

  1. wordcloud 作用如其名。本例核心模块,它把我们带权重的关键词渲染成词云
  2. matplotlib 绘图模块,主要作用是把wordcloud生成的图片绘制出来并在窗口展示
  3. numpy 图像处理模块,读取图片生成像素矩阵
  4. PIL (pip install pillow) 图片处理模块, 打开初始化图片
  5. 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 生成词云的更多相关文章

  1. Python3+pdfminer+jieba+wordcloud+matplotlib生成词云(以深圳十三五规划纲要为例)

    一.各库功能说明 pdfminer----用于读取pdf文件的内容,python3安装pdfminer3k jieba----用于中文分词 wordcloud----用于生成词云 matplotlib ...

  2. 爬虫之绘图matplotlib与词云(七)

    1 绘制条形图 import matplotlib # 数据可视化 from matplotlib import pyplot as plt # 配置字体 matplotlib.rcParams[&q ...

  3. 【python3】爬取简书评论生成词云

    一.起因: 昨天在简书上看到这么一篇文章<中国的父母,大都有毛病>,看完之后个人是比较认同作者的观点. 不过,翻了下评论,发现评论区争议颇大,基本两极化.好奇,想看看整体的评论是个什么样, ...

  4. python使用matplotlib画图,jieba分词、词云、selenuium、图片、音频、视频、文字识别、人脸识别

    一.使用matplotlib画图 关注公众号"轻松学编程"了解更多. 使用matplotlib画柱形图 import matplotlib from matplotlib impo ...

  5. wordcloud + jieba 生成词云

    利用jieba库和wordcloud生成中文词云. jieba库:中文分词第三方库 分词原理: 利用中文词库,确定汉字之间的关联概率,关联概率大的生成词组 三种分词模式: 1.精确模式:把文本精确的切 ...

  6. 根据词频生成词云(Python wordcloud实现)

    网上大多数词云的代码都是基于原始文本生成,这里写一个根据词频生成词云的小例子,都是基于现成的函数. 另外有个在线制作词云的网站也很不错,推荐使用:WordArt 安装词云与画图包 pip3 insta ...

  7. 用python爬取微博数据并生成词云

    很早之前写过一篇怎么利用微博数据制作词云图片出来,之前的写得不完整,而且只能使用自己的数据,现在重新整理了一下,任何的微博数据都可以制作出来,放在今天应该比较应景. 一年一度的虐汪节,是继续蹲在角落默 ...

  8. 用Python生成词云

    词云以词语为基本单元,根据词语在文本中出现的频率设计不同大小的形状以形成视觉上的不同效果,从而使读者只要“一瞥“即可领略文本的主旨.以下是一个词云的简单示例: import jieba from wo ...

  9. 已知词频生成词云图(数据库到生成词云)--generate_from_frequencies(WordCloud)

    词云图是根据词出现的频率生成词云,词的字体大小表现了其频率大小. 写在前面: 用wc.generate(text)直接生成词频的方法使用很多,所以不再赘述. 但是对于根据generate_from_f ...

随机推荐

  1. (转)java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明)

    java向MySQL插入当前时间的四种方式和java时间日期格式化的几种方法(案例说明);部分资料参考网络资源 1. java向MySQL插入当前时间的四种方式 第一种:将java.util.Date ...

  2. hibernate的update、merge和saveOrUpdate的区别(转)

    1.首先 saveOrUpdate返回void 也就是什么都不返回 而merge会返回一个对象 2.其次 saveOrUpdate的做法是:自动判断该对象是否曾经持久化过,如果曾持久化过则使用upda ...

  3. PS 滤镜— —Marble 效果

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); I=imread ...

  4. FFmpeg基础知识之————H264编码profile & level控制

    H.264有四种画质级别,分别是baseline, extended, main, high: 1.Baseline Profile:基本画质.支持I/P 帧,只支持无交错(Progressive)和 ...

  5. noip前打板子 qwq

    在某咕上打了一晚上的模板 感觉还好... #include<bits/stdc++.h> #define LL long long using namespace std; inline ...

  6. POJ1061 青蛙的约会 和 LOJ2721 「NOI2018」屠龙勇士

    青蛙的约会 Language:Default 青蛙的约会 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 133470 Accep ...

  7. bzoj 2001: City 城市建设 cdq

    题目 PS国是一个拥有诸多城市的大国,国王Louis为城市的交通建设可谓绞尽脑汁.Louis可以在某些城市之间修建道路,在不同的城市之间修建道路需要不同的花费.Louis希望建造最少的道路使得国内所有 ...

  8. bzoj 4766: 文艺计算姬 矩阵树定理

    题目: 给定一个一边点数为\(n\),另一边点数为\(m\),共有\(n*m\)条边的带标号完全二分图\(K_{n,m}\) 计算其生成树个数 \(n,m,p \leq 10^{18} ,p为模数\) ...

  9. Maven(6)-POM

    to be continued.

  10. Linux不停往外发包

    一台Linux这两天不停往外发包,造成外部无法访问. [root@ct-nat ~]# watch ifconfig-------------查看数据包新增情况 Every 2.0s: ifconfi ...