用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中操作字符串之rstrip()方法的使用
May 19 Python
Python如何判断数独是否合法
Sep 08 Python
Python自定义进程池实例分析【生产者、消费者模型问题】
Sep 19 Python
python实现FTP服务器服务的方法
Apr 11 Python
python微信跳一跳游戏辅助代码解析
Jan 29 Python
对python中矩阵相加函数sum()的使用详解
Jan 28 Python
Python下简易的单例模式详解
Apr 08 Python
python循环定时中断执行某一段程序的实例
Jun 29 Python
python进阶之自定义可迭代的类
Aug 20 Python
Python实现非正太分布的异常值检测方式
Dec 09 Python
利用pytorch实现对CIFAR-10数据集的分类
Jan 14 Python
python计算列表元素与乘积详情
Aug 05 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-MySQL教程归纳总结
2008/06/07 PHP
php之curl设置超时实例
2014/11/03 PHP
PHP5.5迭代生成器用法实例详解
2016/03/16 PHP
yii框架搜索分页modle写法
2016/12/19 PHP
JavaScript 对象模型 执行模型
2009/12/06 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
IE8对JS通过属性和数组遍历解析不一样的地方探讨
2013/05/06 Javascript
js读取被点击次数的简单实例(从数据库中读取)
2014/03/07 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
JavaScript实现带缓冲效果的随屏滚动漂浮广告代码
2015/11/06 Javascript
vue从使用到源码实现教程详解
2016/09/19 Javascript
JS中关于正则的巧妙操作
2017/08/31 Javascript
JS闭包的几种常见形式实例详解
2017/09/16 Javascript
jQuery实现的页面遮罩层功能示例【测试可用】
2017/10/14 jQuery
pymongo给mongodb创建索引的简单实现方法
2015/05/06 Python
Python基本语法经典教程
2016/03/11 Python
python实现壁纸批量下载代码实例
2018/01/25 Python
python 多维切片之冒号和三个点的用法介绍
2018/04/19 Python
基于python的多进程共享变量正确打开方式
2018/04/28 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
Python3.5集合及其常见运算实例详解
2019/05/01 Python
python树的同构学习笔记
2019/09/14 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
python实现自动清理重复文件
2020/08/24 Python
css3动画过渡实现鼠标跟随导航效果
2018/02/08 HTML / CSS
CSS3实现复选框动画特效示例代码
2016/09/27 HTML / CSS
浅谈html5 video 移动端填坑记
2018/01/15 HTML / CSS
比利时买床:Beter Bed
2017/12/06 全球购物
缅怀先烈演讲稿
2014/09/03 职场文书
2014年最新个人对照检查材料范文
2014/09/25 职场文书
骨干教师申报材料
2014/12/17 职场文书
企业介绍信范文
2015/01/30 职场文书
2015年七七事变78周年纪念活动方案
2015/05/06 职场文书
鉴史问廉观后感
2015/06/10 职场文书
详解使用 CSS prefers-* 规范提升网站的可访问性与健壮性
2021/05/25 HTML / CSS
vue使用Google Recaptcha验证的实现示例
2021/08/23 Vue.js