用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)

yipeiwu_com6年前Python基础

环境及模块:

  • 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 为安徽省轮廓图片:

运行结果:

可以看到,智能设备、施工工法、系统平台、电缆、机器人等都是出现较多的词汇。

最后是秘笈揭晓时间:

为什么我这张图如此清晰?打开原图可以看到,这图的分辨率是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中的cookielib模拟登录网站

前面简单提到了 Python 模拟登录的程序,但是没写清楚,这里再补上一个带注释的 Python 模拟登录的示例程序。简单说一下流程:先用cookielib获取cookie,再用获取到的...

Django model select的多种用法详解

Django model select的多种用法详解

《Django model update的各种用法介绍》文章介绍了Django model的各种update操作,这篇文章就是她的姊妹篇,详细介绍Django model select的...

在 Jupyter 中重新导入特定的 Python 文件(场景分析)

在 Jupyter 中重新导入特定的 Python 文件(场景分析)

Jupyter 是数据分析领域非常有名的开发环境,使用 Jupyter 写数据分析相关的代码会大大节约开发时间。 设想这样一个场景:别的部门的同事传给你一个数据分析的模块,用于实现对数据...

如何用Python来搭建一个简单的推荐系统

在这篇文章中,我们会介绍如何用Python来搭建一个简单的推荐系统。 本文使用的数据集是MovieLens数据集,该数据集由明尼苏达大学的Grouplens研究小组整理。它包含1,10和...

python 发送json数据操作实例分析

python 发送json数据操作实例分析

本文实例讲述了python 发送json数据操作。分享给大家供大家参考,具体如下: # !/usr/bin/env python # -*- coding: utf-8 -*-...