用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 中random模块的常用方法总结
Jul 08 Python
基于DataFrame改变列类型的方法
Jul 25 Python
pygame游戏之旅 载入小车图片、更新窗口
Nov 20 Python
使用python进行拆分大文件的方法
Dec 10 Python
Python字典的基本用法实例分析【创建、增加、获取、修改、删除】
Mar 05 Python
python实现弹窗祝福效果
Apr 07 Python
windows10下安装TensorFlow Object Detection API的步骤
Jun 13 Python
Python 正则表达式爬虫使用案例解析
Sep 23 Python
python 计算积分图和haar特征的实例代码
Nov 20 Python
Python基础之字符串常见操作经典实例详解
Feb 26 Python
PyTorch 中的傅里叶卷积实现示例
Dec 11 Python
Pandas之缺失数据的实现
Jan 06 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边学边教》(04.编写简易的通讯录――视频教程1)
2006/12/13 PHP
php动态函数调用方法
2015/05/21 PHP
php实现的读取CSV文件函数示例
2017/02/07 PHP
js实现运行代码需要刷新的解决方法
2007/08/18 Javascript
通过Mootools 1.2来操纵HTML DOM元素
2009/09/15 Javascript
通过一段代码简单说js中的this的使用
2013/07/23 Javascript
jquery 简单应用示例总结
2013/08/09 Javascript
JS取request值以及自动执行使用示例
2014/02/24 Javascript
JavaScript中getUTCMinutes()方法的使用详解
2015/06/10 Javascript
jQuery实现简易的天天爱消除小游戏
2015/10/16 Javascript
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
一种Javascript解释ajax返回的json的好方法(推荐)
2016/06/02 Javascript
jquery注册文本框获取焦点清空,失去焦点赋值的简单实例
2016/09/08 Javascript
js 转json格式的字符串为对象或数组(前后台)的方法
2016/11/02 Javascript
详解使用vue-router进行页面切换时滚动条位置与滚动监听事件
2017/03/08 Javascript
ES6中Iterator与for..of..遍历用法分析
2017/03/31 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
详解webpack+express多页站点开发
2017/12/22 Javascript
JavaScript实现一个带AI的井字棋游戏源码
2018/05/21 Javascript
Layui数据表格跳转到指定页的实现方法
2019/09/05 Javascript
使用layui前端框架弹出form表单以及提交的示例
2019/10/25 Javascript
微信小程序以ssm做后台开发的实现示例
2020/04/08 Javascript
python使用paramiko实现远程拷贝文件的方法
2016/04/18 Python
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
python图像处理入门(一)
2019/04/04 Python
Bloomingdale’s阿联酋:选购奢华时尚、美容及更多
2020/09/22 全球购物
主键(Primary Key)约束和唯一性(UNIQUE)约束的区别
2013/05/29 面试题
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
医院护士专业个人的求职信
2013/12/09 职场文书
学校安全工作制度
2014/01/19 职场文书
女娲补天教学反思
2014/02/05 职场文书
材料专业毕业生求职信
2014/02/26 职场文书
效能风暴心得体会
2014/09/04 职场文书
矛盾论读书笔记
2015/06/29 职场文书
vue2的 router在使用过程中遇到的一些问题
2022/04/13 Vue.js
使用CSS实现音波加载效果
2023/05/07 HTML / CSS