用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 21 Python
零基础写python爬虫之HTTP异常处理
Nov 05 Python
21行Python代码实现拼写检查器
Jan 25 Python
详解使用pymysql在python中对mysql的增删改查操作(综合)
Jan 18 Python
Python 数据处理库 pandas 入门教程基本操作
Apr 19 Python
Python 内置函数进制转换的用法(十进制转二进制、八进制、十六进制)
Apr 30 Python
Python之inspect模块实现获取加载模块路径的方法
Oct 16 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
Python3爬虫学习入门教程
Dec 11 Python
Pytorch损失函数nn.NLLLoss2d()用法说明
Jul 07 Python
Python的flask接收前台的ajax的post数据和get数据的方法
Apr 12 Python
Jupyter notebook 输出部分显示不全的解决方案
Apr 24 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 array_key_exists() 与 isset() 的区别
2016/10/24 PHP
javascript中的继承实例代码
2011/04/27 Javascript
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
JavaScript静态类型检查工具FLOW简介
2015/01/06 Javascript
Javascript writable特性介绍
2015/02/27 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
js判断iframe中元素是否存在的实现代码
2016/12/24 Javascript
JavaScript使用delete删除数组元素用法示例【数组长度不变】
2017/01/17 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
bootstrap轮播图示例代码分享
2017/05/17 Javascript
mongoose中利用populate处理嵌套的方法
2017/05/26 Javascript
基于ExtJs在页面上window再调用Window的事件处理方法
2017/07/26 Javascript
详解vue-admin和后端(flask)分离结合的例子
2018/02/12 Javascript
JS实现点击生成UUID的方法完整实例【基于jQuery】
2019/06/12 jQuery
jQuery属性选择器用法实例分析
2019/06/28 jQuery
解决vant的Toast组件时提示not defined的问题
2020/11/11 Javascript
[54:53]2014 DOTA2国际邀请赛中国区预选赛 LGD-GAMING VS CIS 第二场
2014/05/23 DOTA
Python实现比较两个文件夹中代码变化的方法
2015/07/10 Python
举例讲解Python设计模式编程的代理模式与抽象工厂模式
2016/01/16 Python
基于Python Numpy的数组array和矩阵matrix详解
2018/04/04 Python
Python Selenium Cookie 绕过验证码实现登录示例代码
2018/04/10 Python
Python中py文件引用另一个py文件变量的方法
2018/04/29 Python
python的格式化输出(format,%)实例详解
2018/06/01 Python
Python urlopen()和urlretrieve()用法解析
2020/01/07 Python
基于django2.2连oracle11g解决版本冲突的问题
2020/07/02 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
用python 绘制茎叶图和复合饼图
2021/02/26 Python
联想英国官网:Lenovo英国
2019/07/17 全球购物
天网面试题
2013/04/07 面试题
初中校园广播稿
2014/02/02 职场文书
企业财务总监岗位职责
2015/04/03 职场文书
个人催款函范文
2015/06/23 职场文书
儿童诗两首教学反思
2016/02/23 职场文书
Python 把两层列表展开平铺成一层(5种实现方式)
2021/04/07 Python
python 使用tkinter与messagebox写界面和弹窗
2022/03/20 Python
安装harbor作为docker镜像仓库的问题
2022/06/14 Servers