用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 time模块详解(常用函数实例讲解,非常好)
Apr 24 Python
python通过post提交数据的方法
May 06 Python
python递归查询菜单并转换成json实例
Mar 27 Python
Sanic框架流式传输操作示例
Jul 18 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python如何爬取网站数据并进行数据可视化
Jul 08 Python
django基于restframework的CBV封装详解
Aug 08 Python
如何关掉pycharm中的python console(图解)
Oct 31 Python
Python xpath表达式如何实现数据处理
Jun 13 Python
基于Python 的语音重采样函数解析
Jul 06 Python
五分钟学会怎么用Pygame做一个简单的贪吃蛇
Jan 06 Python
使用pd.merge表连接出现多余行的问题解决
Jun 16 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
php-cli简介(不会Shell语言一样用Shell)
2013/06/03 PHP
Yii框架结合sphinx,Ajax实现搜索分页功能示例
2016/10/18 PHP
utf8的编码算法 转载
2006/12/27 Javascript
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
跨浏览器通用、可重用的选项卡tab切换js代码
2011/09/20 Javascript
模拟select的代码
2011/10/19 Javascript
js页面跳转的问题(跳转到父页面、最外层页面、本页面)
2013/08/14 Javascript
jQuery把表单元素变为json对象
2013/11/06 Javascript
用JavaScript实现一个代码简洁、逻辑不复杂的多级树
2014/05/23 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
基于insertBefore制作简单的循环插空效果
2015/09/21 Javascript
JS遍历ul下的li点击弹出li的索引的实现方法
2016/09/19 Javascript
vue.js实现备忘录功能的方法
2017/07/10 Javascript
jQuery轮播图功能制作方法详解
2019/12/03 jQuery
JavaScript使用setTimeout实现倒计时效果
2021/02/19 Javascript
Python基于分水岭算法解决走迷宫游戏示例
2017/09/26 Python
Python遍历某目录下的所有文件夹与文件路径
2018/03/15 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
解决pycharm工程启动卡住没反应的问题
2019/01/19 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
python实现计算器功能
2019/10/31 Python
西班牙在线宠物商店:zooplus.es
2017/02/24 全球购物
澳大利亚家具和家居用品购物网站:Zanui
2018/12/29 全球购物
女士和男士时尚鞋在线购物:Shoespie
2019/02/28 全球购物
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
电子商务专业推荐信范文
2013/12/02 职场文书
优秀经理获奖感言
2014/03/04 职场文书
二年级小学生评语
2014/04/21 职场文书
党支部综合考察材料
2014/05/19 职场文书
本科生就业推荐信
2014/05/19 职场文书
优秀乡村医生事迹材料
2014/05/28 职场文书
2014年法院工作总结
2014/11/24 职场文书
黄石寨导游词
2015/02/05 职场文书
祝寿主持词
2015/07/02 职场文书
会计主管竞聘书
2015/09/15 职场文书
德生BCL3000抢先使用感受和评价
2022/04/07 无线电