用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多线程下的变量问题
Apr 28 Python
在Python中使用swapCase()方法转换大小写的教程
May 20 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python 对输入的数字进行排序的方法
Jun 23 Python
Python 数据可视化pyecharts的使用详解
Jun 26 Python
python3.7环境下安装Anaconda的教程图解
Sep 10 Python
python自动化实现登录获取图片验证码功能
Nov 20 Python
python去除删除数据中\u0000\u0001等unicode字符串的代码
Mar 06 Python
Python pip使用超时问题解决方案
Aug 03 Python
简述python&amp;pytorch 随机种子的实现
Oct 07 Python
pytorch __init__、forward与__call__的用法小结
Feb 27 Python
基于Python实现射击小游戏的制作
Apr 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实现的漂亮分页方法
2014/04/17 PHP
微信自定义菜单的处理开发示例
2015/04/16 PHP
PHP stream_context_create()函数的使用示例
2015/05/12 PHP
ThinkPHP框架实现数据增删改
2017/05/07 PHP
php两点地理坐标距离的计算方法
2018/12/29 PHP
BOOM vs RR BO3 第二场2.13
2021/03/10 DOTA
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
Javascript操作表单实例讲解(下)
2016/06/20 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
Vuex入门到上手教程
2018/06/20 Javascript
深入webpack打包原理及loader和plugin的实现
2020/05/06 Javascript
[01:07:53]RNG vs VG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/17 DOTA
Python虚拟环境Virtualenv使用教程
2015/05/18 Python
python Celery定时任务的示例
2018/03/13 Python
如何用Python做一个微信机器人自动拉群
2019/07/03 Python
详解Python Opencv和PIL读取图像文件的差别
2019/12/27 Python
python中字典增加和删除使用方法
2020/09/30 Python
如何基于matlab相机标定导出xml文件
2020/11/02 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
python爬虫线程池案例详解(梨视频短视频爬取)
2021/02/20 Python
CSS3制作圆形滚动进度条动画的示例
2020/11/05 HTML / CSS
德国百年厨具品牌WMF美国站:WMF美国
2016/09/12 全球购物
Born鞋子官网:Born Shoes
2017/04/06 全球购物
eDreams加拿大:廉价航班、酒店和度假
2019/03/29 全球购物
Kickers鞋英国官网:男士、女士和儿童鞋
2021/03/08 全球购物
工程安全员岗位职责
2014/03/09 职场文书
员工培训协议书
2014/09/15 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
开业典礼致辞
2015/07/29 职场文书
《工作是最好的修行》读后感3篇
2019/12/13 职场文书
Html5新增了哪些功能
2021/04/16 HTML / CSS
Redis分布式锁Redlock的实现
2021/08/07 Redis
Python 全局空间和局部空间
2022/04/06 Python
Python OpenCV之常用滤波器使用详解
2022/04/07 Python
Oracle使用别名的好处
2022/04/19 Oracle