用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自动化测试之从命令行运行测试用例with verbosity
Sep 28 Python
Python使用xlrd模块操作Excel数据导入的方法
May 26 Python
Win10下Python环境搭建与配置教程
Nov 18 Python
Python中使用logging和traceback模块记录日志和跟踪异常
Apr 09 Python
Python根据当前日期取去年同星期日期
Apr 14 Python
django用户登录验证的完整示例代码
Jul 21 Python
通过Python编写一个简单登录功能过程解析
Sep 04 Python
Python底层封装实现方法详解
Jan 22 Python
python判断变量是否为int、字符串、列表、元组、字典的方法详解
Feb 13 Python
Python-opencv实现红绿两色识别操作
Jun 04 Python
python 制作简单的音乐播放器
Nov 25 Python
pyx文件 生成pyd 文件用于 cython调用的实现
Mar 04 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
ajax+php打造进度条代码[readyState各状态说明]
2010/04/12 PHP
6种php上传图片重命名的方法实例
2013/11/04 PHP
解决file_get_contents无法请求https连接的方法
2013/12/17 PHP
document.open() 与 document.write()的区别
2007/08/13 Javascript
javaScript 数值型和字符串型之间的转换
2009/07/25 Javascript
封装的原生javascript弹出层代码
2010/09/24 Javascript
Jquery读取URL参数小例子
2013/08/30 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
Vue应用部署到服务器的正确方式
2017/07/15 Javascript
基于js中的存储键值对以及注意事项介绍
2018/03/30 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
2018/05/09 jQuery
详解Vue中使用Echarts的两种方式
2018/07/03 Javascript
使用Vue-Awesome-Swiper实现旋转叠加轮播效果&amp;平移轮播效果
2019/08/16 Javascript
vue中实现点击空白区域关闭弹窗的两种方法
2020/12/30 Vue.js
Python类的专用方法实例分析
2015/01/09 Python
玩转python爬虫之URLError异常处理
2016/02/17 Python
实例讲解Python编程中@property装饰器的用法
2016/06/20 Python
谈谈python中GUI的选择
2018/03/01 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
PyTorch中Tensor的拼接与拆分的实现
2019/08/18 Python
Python编程快速上手——PDF文件操作案例分析
2020/02/28 Python
python GUI编程(Tkinter) 创建子窗口及在窗口上用图片绘图实例
2020/03/04 Python
Python面向对象特殊属性及方法解析
2020/09/16 Python
CSS3弹性盒模型flex box快速入门心得(必看篇)
2016/05/24 HTML / CSS
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
中东地区为妈妈们提供一切的头号购物目的地:Sprii
2018/05/06 全球购物
美国最佳在线航班预订网站:LookupFare
2019/03/26 全球购物
法律专业实习鉴定
2013/12/22 职场文书
喷漆工的岗位职责
2014/03/17 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
2014入党积极分子批评与自我批评思想汇报
2014/09/20 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
护士个人总结范文
2015/02/13 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
Vue如何清空对象
2022/03/03 Vue.js
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL