用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)


Posted in Python onJanuary 08, 2019

环境及模块:

  • Win7 64位
  • Python 3.6.4
  • WordCloud 1.5.0
  • Pillow 5.0.0
  • Jieba 0.39

目标:

绘制安徽省2018年某些科技项目的词云,直观展示热点。

思路:

先提取项目的名称,再用Jieba分词后提取词汇;过滤掉“研发”、“系列”等无意义的词;最后用WordCloud 绘制词云。

扩展:

词云默认是矩形的,本代码采用图片作为蒙版,产生异形词云图。这里用的图片是安徽省地图。

秘笈:

用网上的常规方法绘制的词云,字体有点模糊,秘笈在最后点明。

正式开始,Show you the code:

import numpy as np
from PIL import Image
import re
import jieba
from wordcloud import WordCloud,ImageColorGenerator,STOPWORDS
import matplotlib.pyplot as plt
# http://www.cnblogs.com/hatemath/
# 打开存放项目名称的txt文件
with open('content.txt','r',encoding='utf-8') as f:
  word= (f.read())
  f.close()

# 图片模板和字体
image=np.array(Image.open('ditu.jpg')) 
font=r'C:\\Windows\\fonts\\msyh.ttf' 

# 去掉英文,保留中文 
resultword=re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "",word) 
wordlist_after_jieba = jieba.cut(resultword) 
wl_space_split = " ".join(wordlist_after_jieba) 

# 设置停用词 
sw = set(STOPWORDS) 
sw.add("研发")
sw.add("系列")
sw.add("这里不多写了,根据自己情况添加")

# 关键一步
my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color='white',
             max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split) 

#显示生成的词云 
plt.imshow(my_wordcloud)
plt.axis("off") 
plt.show() 

#保存生成的图片
my_wordcloud.to_file('result.jpg')

其中 ditu.jpg 为安徽省轮廓图片:

用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)

运行结果:

用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)

可以看到,智能设备、施工工法、系统平台、电缆、机器人等都是出现较多的词汇。

最后是秘笈揭晓时间:

为什么我这张图如此清晰?打开原图可以看到,这图的分辨率是1800*2500。你用网上的大多数代码,最后生成的图,尺寸很小,上面字迹边缘模糊。

关键在于调用WordCloud时的一个参数,回放一下代码:

# 关键一步
my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color='white',
max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)

第一个参数我写的是 scale=4,这个数值越大,产生的图片分辨率越高,字迹越清晰。你可以调到64试试,我希望你的电脑足够快 /笑哭

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

Python 相关文章推荐
Python Mysql自动备份脚本
Jul 14 Python
使用python实现ANN
Dec 20 Python
Pyspider中给爬虫伪造随机请求头的实例
May 07 Python
解决tensorflow测试模型时NotFoundError错误的问题
Jul 26 Python
利用python实现在微信群刷屏的方法
Feb 21 Python
Pycharm简单使用教程(入门小结)
Jul 04 Python
python中hasattr()、getattr()、setattr()函数的使用
Aug 16 Python
Python多线程操作之互斥锁、递归锁、信号量、事件实例详解
Mar 24 Python
如何基于python3和Vue实现AES数据加密
Mar 27 Python
pandas数据选取:df[] df.loc[] df.iloc[] df.ix[] df.at[] df.iat[]
Apr 24 Python
python 6行代码制作月历生成器
Sep 18 Python
django中ImageField的使用详解
Dec 21 Python
Python离线安装PIL 模块的方法
Jan 08 #Python
Python数据预处理之数据规范化(归一化)示例
Jan 08 #Python
Python实现的拉格朗日插值法示例
Jan 08 #Python
Python3 安装PyQt5及exe打包图文教程
Jan 08 #Python
在python3中pyqt5和mayavi不兼容问题的解决方法
Jan 08 #Python
Django之模型层多表操作的实现
Jan 08 #Python
对python mayavi三维绘图的实现详解
Jan 08 #Python
You might like
ThinkPHP分页类使用详解
2014/03/05 PHP
php中unserialize返回false的解决方法
2014/09/22 PHP
PHP与MYSQL中UTF8 中文排序示例代码
2014/10/23 PHP
使用array_map简单搞定PHP删除文件、删除目录
2014/10/29 PHP
Laravel validate error处理,ajax,json示例
2019/10/25 PHP
HR vs CL BO3 第二场 2.13
2021/03/10 DOTA
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
IE事件对象(The Internet Explorer Event Object)
2012/06/27 Javascript
js获取多个tagname的节点数组
2013/09/22 Javascript
2则自己编写的jQuery特效分享
2015/02/26 Javascript
javascript与jquery中的this关键字用法实例分析
2015/12/24 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
jQuery多文件异步上传带进度条实例代码
2016/08/16 Javascript
JS取数字小数点后两位或n位的简单方法
2016/10/24 Javascript
基于构造函数的五种继承方法小结
2017/07/27 Javascript
Javascript中的作用域及块级作用域
2017/12/08 Javascript
利用Vue构造器创建Form组件的通用解决方法
2018/12/03 Javascript
基于vue+uniapp直播项目实现uni-app仿抖音/陌陌直播室功能
2019/11/12 Javascript
jQuery编写QQ简易聊天框
2020/08/27 jQuery
Python自动化测试Eclipse+Pydev 搭建开发环境
2016/08/15 Python
Python定时任务工具之APScheduler使用方式
2019/07/24 Python
python tkinter控件布局项目实例
2019/11/04 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
浅析Python 条件控制语句
2020/07/15 Python
通过Django Admin+HttpRunner1.5.6实现简易接口测试平台
2020/11/11 Python
杰夫·班克斯男士服装网上商店:Jeff Banks
2019/10/24 全球购物
优秀部门获奖感言
2014/02/14 职场文书
选秀节目策划方案
2014/06/06 职场文书
暖通工程师岗位职责
2014/06/12 职场文书
大学生求职简历自我评价
2015/03/02 职场文书
个人的事迹材料怎么写
2019/04/24 职场文书
详解CSS不定宽溢出文本适配滚动
2021/05/24 HTML / CSS
JAVA SpringMVC实现自定义拦截器
2022/03/16 Python
Python OpenCV超详细讲解调整大小与图像操作的实现
2022/04/02 Python
青岛市的收音机研制与生产
2022/04/07 无线电
Java使用HttpClient实现文件下载
2022/08/14 Java/Android