用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异常学习笔记
Feb 03 Python
python使用paramiko实现远程拷贝文件的方法
Apr 18 Python
python操作excel的方法(xlsxwriter包的使用)
Jun 11 Python
Python Selenium 之关闭窗口close与quit的方法
Feb 13 Python
Python3几个常见问题的处理方法
Feb 26 Python
python tkinter实现彩球碰撞屏保
Jul 30 Python
python selenium登录豆瓣网过程解析
Aug 10 Python
python GUI库图形界面开发之PyQt5信号与槽机制、自定义信号基础介绍
Feb 25 Python
Python @property及getter setter原理详解
Mar 31 Python
使用pyecharts1.7进行简单的可视化大全
May 17 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
django项目中使用云片网发送短信验证码的实现
Jan 19 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
javascript入门·对象属性方法大总结
2007/10/01 Javascript
JQuery开发的数独游戏代码
2010/10/29 Javascript
js post提交调用方法
2014/02/12 Javascript
js拖拽一些常见的思路方法整理
2014/03/19 Javascript
Node.js实现简单聊天服务器
2014/06/20 Javascript
基于jQuery实现的图片切换焦点图整理
2014/12/07 Javascript
angularJS结合canvas画图例子
2015/02/09 Javascript
js插件设置innerHTML时在IE8下提示“未知运行时错误”解决方法
2015/04/25 Javascript
跟我学习javascript的隐式强制转换
2015/11/16 Javascript
Bootstrap的Refresh Icon也spin起来
2016/07/13 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
bootstrap日历插件datetimepicker使用方法
2016/12/14 Javascript
jacascript DOM节点——元素节点、属性节点、文本节点
2017/04/18 Javascript
微信小程序 蓝牙的实现实例代码
2017/06/27 Javascript
Javascript中this关键字指向问题的测试与详解
2017/08/11 Javascript
深入浅析JavaScript中的RegExp对象
2017/09/18 Javascript
bootstrap select下拉搜索插件使用方法详解
2017/11/23 Javascript
js仿淘宝放大镜效果
2020/12/28 Javascript
[01:00:35]2018DOTA2亚洲邀请赛3月30日B组 EffcetVSMineski
2018/03/31 DOTA
Python中的闭包总结
2014/09/18 Python
python读取二进制mnist实例详解
2017/05/31 Python
Python中表示字符串的三种方法
2017/09/06 Python
python 实现语音聊天机器人的示例代码
2018/12/02 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
2018/12/24 Python
python将类似json的数据存储到MySQL中的实例
2019/07/12 Python
python实现批量文件重命名
2019/10/31 Python
python递归调用中的坑:打印有值, 返回却None
2020/03/16 Python
在pycharm中创建django项目的示例代码
2020/05/28 Python
Python轻量级web框架bottle使用方法解析
2020/06/13 Python
一篇文章搞懂python的转义字符及用法
2020/09/03 Python
CSS Grid布局教程之网格单元格布局
2014/12/30 HTML / CSS
css3 边框、背景、文本效果的实现代码
2018/03/21 HTML / CSS
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
Bibloo奥地利:购买女装、男装、童装、鞋和配件
2018/10/18 全球购物
销售工作决心书
2015/02/04 职场文书
详细分析PHP7与PHP5区别
2021/06/26 PHP