这篇文章将为大家详细讲解有关怎么使用Python和WordCloud绘制词云的实现方法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1、简单易用,与C/C++、Java、C# 等传统语言相比,Python对代码格式的要求没有那么严格;2、Python属于开源的,所有人都可以看到源代码,并且可以被移植在许多平台上使用;3、Python面向对象,能够支持面向过程编程,也支持面向对象编程;4、Python是一种解释性语言,Python写的程序不需要编译成二进制代码,可以直接从源代码运行程序;5、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和WordCloud绘制词云的实现方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。