用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中学习K-Means和图片压缩
Nov 20 Python
20个常用Python运维库和模块
Feb 12 Python
django初始化数据库的实例
May 27 Python
pycharm的console输入实现换行的方法
Jan 16 Python
Python 移动光标位置的方法
Jan 20 Python
Python实现FTP弱口令扫描器的方法示例
Jan 31 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
Python3 无重复字符的最长子串的实现
Oct 08 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
Feb 18 Python
python中使用you-get库批量在线下载bilibili视频的教程
Mar 10 Python
Python带参数的装饰器运行原理解析
Jun 09 Python
pandas 操作 Excel操作总结
Mar 31 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
PHP开发者常犯的10个MySQL错误更正剖析
2012/01/30 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
对php 判断http还是https,以及获得当前url的方法详解
2019/01/15 PHP
用js计算页面执行时间的函数
2006/12/07 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
js中escape对应的C#解码函数 UrlDecode
2012/12/16 Javascript
artDialog双击会关闭对话框的修改过程分享
2013/08/05 Javascript
js通过元素class名字获取元素集合的具体实现
2014/01/06 Javascript
js生成缩略图后上传并利用canvas重绘
2014/05/15 Javascript
js实现页面跳转的五种方法推荐
2016/03/10 Javascript
基于jquery实现即时检查格式是否正确的表单
2016/05/06 Javascript
JS中微信小程序自定义底部弹出框
2016/12/22 Javascript
Ionic学习日记实现验证码倒计时
2018/02/08 Javascript
JS中常用的消息框总结
2018/02/24 Javascript
深入理解JavaScript 中的匿名函数((function() {})();)与变量的作用域
2018/08/28 Javascript
JavaScript修改注册表实例代码
2020/01/05 Javascript
[04:26]2014DOTA2国际邀请赛-Newbee顺利进入胜者组决赛 独家专访战神7
2014/07/19 DOTA
Python with语句上下文管理器两种实现方法分析
2018/02/09 Python
ubuntu16.04制作vim和python3的开发环境
2018/09/23 Python
Python实现html转换为pdf报告(生成pdf报告)功能示例
2019/05/04 Python
解决Python正则表达式匹配反斜杠''\''问题
2019/07/17 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
如何在 Django 模板中输出 &quot;{{&quot;
2020/01/24 Python
Python代码一键转Jar包及Java调用Python新姿势
2020/03/10 Python
踩坑:pytorch中eval模式下结果远差于train模式介绍
2020/06/23 Python
为2021年的第一场雪锦上添花:用matplotlib绘制雪花和雪景
2021/01/05 Python
详解matplotlib绘图样式(style)初探
2021/02/03 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
HTML 5 标签、属性、事件及浏览器兼容性速查表 附打包下载
2012/10/20 HTML / CSS
canvas 如何绘制线段的实现方法
2018/07/12 HTML / CSS
一些.net面试题
2014/10/06 面试题
傲盾软件面试题
2015/08/17 面试题
护士在校生自荐信
2014/02/01 职场文书
2015年党总支工作总结
2015/05/25 职场文书
Vue中Object.assign清空数据报错的解决方案
2022/03/03 Vue.js