用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下的Mysql模块MySQLdb安装详解
Apr 09 Python
在Python中使用mechanize模块模拟浏览器功能
May 05 Python
Python读大数据txt
Mar 28 Python
python实现树形打印目录结构
Mar 29 Python
python如何创建TCP服务端和客户端
Aug 26 Python
解决Pycharm出现的部分快捷键无效问题
Oct 22 Python
在Python中给Nan值更改为0的方法
Oct 30 Python
django的ORM模型的实现原理
Mar 04 Python
python进程的状态、创建及使用方法详解
Dec 06 Python
python里的单引号和双引号的有什么作用
Jun 17 Python
python执行js代码的方法
May 13 Python
Python selenium的这三种等待方式一定要会!
Jun 10 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 sybase_fetch_array使用方法
2014/04/15 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
PHP面向对象程序设计模拟一般面向对象语言中的方法重载(overload)示例
2019/06/13 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
Enter回车切换输入焦点实现思路与代码兼容各大浏览器
2014/09/01 Javascript
基于js实现投票的实例代码
2015/08/04 Javascript
JS简单编号生成器实现方法(附demo源码下载)
2016/04/05 Javascript
详解nodejs与javascript中的aes加密
2016/05/22 NodeJs
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
JS获取填报扩展单元格控件的值的解决办法
2017/07/14 Javascript
vue-cli webpack 引入jquery的方法
2018/01/10 jQuery
Vue中v-show添加表达式的问题(判断是否显示)
2018/03/26 Javascript
微信小程序日期选择器实例代码
2018/07/18 Javascript
Angular请求防抖处理第一次请求失效问题
2019/05/17 Javascript
[04:52]2015国际邀请赛LGD战队晋级之路
2015/08/14 DOTA
Python中用format函数格式化字符串的用法
2015/04/08 Python
Python 爬虫学习笔记之多线程爬虫
2016/09/21 Python
Python虚拟环境项目实例
2017/11/20 Python
分享一个简单的python读写文件脚本
2017/11/25 Python
Python操作Excel插入删除行的方法
2018/12/10 Python
Python matplotlib生成图片背景透明的示例代码
2019/08/30 Python
pandas-resample按时间聚合实例
2019/12/27 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
pycharm2020.2 配置使用的方法详解
2020/09/16 Python
pytorch __init__、forward与__call__的用法小结
2021/02/27 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
加拿大鞋网:Globo Shoes
2019/12/26 全球购物
教师专业理论水平的自我评价分享
2013/11/09 职场文书
2014的自我评价
2014/01/13 职场文书
《锄禾》教学反思
2014/04/08 职场文书
机关党员公开承诺书
2014/08/30 职场文书
市场营销工作计划书
2014/09/15 职场文书
2015高考寄语集锦
2015/02/27 职场文书
2015毕业实习推荐信
2015/03/23 职场文书
健康证明
2015/06/19 职场文书
iSCSI服务器CHAP双向认证配置
2022/04/01 Servers