用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 ORM框架SQLAlchemy学习笔记之关系映射实例
Jun 10 Python
python爬虫实现教程转换成 PDF 电子书
Feb 19 Python
python3实现ftp服务功能(服务端 For Linux)
Mar 24 Python
python中map()函数的使用方法示例
Sep 29 Python
Python中turtle作图示例
Nov 15 Python
python将文本中的空格替换为换行的方法
Mar 19 Python
python如何拆分含有多种分隔符的字符串
Mar 20 Python
Pandas实现数据类型转换的一些小技巧汇总
May 07 Python
对TensorFlow的assign赋值用法详解
Jul 30 Python
python七夕浪漫表白源码
Apr 05 Python
Python匿名函数及应用示例
Apr 09 Python
Python中使用socks5设置全局代理的方法示例
Apr 15 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获取网页中图片、DIV内容的简单方法
2014/06/19 PHP
服务端 VBScript 与 JScript 几个相同特性的写法 By shawl.qiu
2007/03/06 Javascript
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
Ext.FormPanel 提交和 Ext.Ajax.request 异步提交函数的区别
2009/11/12 Javascript
jquery调用asp.net 页面后台的实现代码
2011/04/27 Javascript
javascript时间自动刷新实现原理与步骤
2013/01/06 Javascript
60个很实用的jQuery代码开发技巧收集
2014/12/15 Javascript
JS+CSS实现DIV层的展开、收缩效果
2016/01/28 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
Angular.js项目中使用gulp实现自动化构建以及压缩打包详解
2017/07/19 Javascript
JS实现十字坐标跟随鼠标效果
2017/12/25 Javascript
如何以Angular的姿势打开Font-Awesome详解
2018/04/22 Javascript
JS实现前端页面的搜索功能
2018/06/12 Javascript
PM2自动部署代码步骤流程总结
2018/12/10 Javascript
JavaScript模板引擎应用场景及实现原理详解
2018/12/14 Javascript
图文讲解vue的v-if使用方法
2019/02/11 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
微信小程序上传多图到服务器并获取返回的路径
2019/05/05 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
2020/05/23 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
JavaScript点击按钮生成4位随机验证码
2021/01/28 Javascript
Python实现将n个点均匀地分布在球面上的方法
2015/03/12 Python
python处理大数字的方法
2015/05/27 Python
一百多行python代码实现抢票助手
2018/09/25 Python
详解Python3 pandas.merge用法
2019/09/05 Python
Python eval函数原理及用法解析
2020/11/14 Python
python中PyQuery库用法分享
2021/01/15 Python
用css3写出气球样式的示例代码
2017/09/11 HTML / CSS
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
自荐书封面下载
2013/11/29 职场文书
内衣营销方案
2014/03/15 职场文书
生产文员岗位职责
2014/04/05 职场文书
利用python进行数据加载
2021/06/20 Python
Javascript之datagrid查询详解
2021/09/15 Javascript
详解MySQL的内连接和外连接
2023/05/08 MySQL