用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实现查找系统盘中需要找的字符
Jul 14 Python
使用Python对Csv文件操作实例代码
May 12 Python
利用Python找出序列中出现最多的元素示例代码
Dec 08 Python
pyqt5简介及安装方法介绍
Jan 31 Python
python3调用R的示例代码
Feb 23 Python
Python global全局变量函数详解
Sep 18 Python
Django2.1.3 中间件使用详解
Nov 26 Python
Python编写打字训练小程序
Sep 26 Python
Python 实现训练集、测试集随机划分
Jan 08 Python
Python pexpect模块及shell脚本except原理解析
Aug 03 Python
Python3 类型标注支持操作
Jun 02 Python
关于Python中*args和**kwargs的深入理解
Aug 07 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版(2)
2006/10/09 PHP
php防止恶意刷新与刷票的方法
2014/11/21 PHP
PHP使用ActiveMQ实现消息队列的方法详解
2019/05/31 PHP
thinkPHP框架乐观锁和悲观锁实例分析
2019/10/30 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
锋利的jQuery 要点归纳(三) jQuery中的事件和动画(上:事件篇)
2010/03/24 Javascript
javascript+mapbar实现地图定位
2010/04/09 Javascript
js判断两个日期是否相等的方法
2013/09/10 Javascript
JS画线(实例代码)
2013/11/20 Javascript
javascript trim函数在IE下不能用的解决方法
2014/09/12 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
jquery实现静态搜索功能(可输入搜索文字)
2017/03/28 jQuery
NodeJs form-data格式传输文件的方法
2017/12/13 NodeJs
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
基于jQuery使用Ajax动态执行模糊查询功能
2018/07/05 jQuery
Vue自定义全局Toast和Loading的实例详解
2019/04/18 Javascript
Vue中的transition封装组件的实现方法
2019/08/13 Javascript
node中短信api实现验证码登录的示例代码
2021/01/20 Javascript
[43:51]2014 DOTA2国际邀请赛中国区预选赛 Dream Times VS TongFu
2014/05/22 DOTA
python logging日志模块的详解
2017/10/29 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
Python设计模式之建造者模式实例详解
2019/01/17 Python
详解Python3序列赋值、序列解包
2019/05/14 Python
Python 微信爬虫完整实例【单线程与多线程】
2019/07/06 Python
python在一个范围内取随机数的简单实例
2020/08/16 Python
纯CSS3实现鼠标滑过按钮动画第二节
2020/07/16 HTML / CSS
利用canvas实现图片下载功能来实现浏览器兼容问题
2019/05/31 HTML / CSS
美国家居装饰店:Pier 1
2019/09/04 全球购物
贯彻学习两会心得体会范文
2014/03/17 职场文书
企业群众路线教育实践活动心得体会
2014/11/03 职场文书
2014年初中班主任工作总结
2014/11/08 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
师德先进个人材料
2014/12/20 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL
Elasticsearch Recovery 详细介绍
2022/04/19 Java/Android
MySQL索引失效十种场景与优化方案
2023/05/08 MySQL