python绘制词云_用Python和WordCloud绘制词云(内附让字体清晰的秘笈)

环境及模块:

Win7 64位

Python 3.6.4

WordCloud 1.5.0

Pillow 5.0.0

Jieba 0.39

目标:

绘制安徽省2018年xxxxx的词云,直观展示热点。

思路:

先提取项目的名称,再用Jieba分词后提取词汇;过滤掉“研发”、“系列”等无意义的词;最后用WordCloud 绘制词云。

扩展:

词云默认是矩形的,本代码采用图片作为蒙版,产生异形词云图。这里用的图片是安徽省地图。

秘笈:

用网上的常规方法绘制的词云,字体有点模糊,秘笈在最后点明。

本文由hATEmATH原创 转载请注明出处:http://www.cnblogs.com/hatemath/

正式开始,Show you the code:

1 importnumpy as np2 from PIL importImage3 importre4 importjieba5 from wordcloud importWordCloud,ImageColorGenerator,STOPWORDS6 importmatplotlib.pyplot as plt7

8 #打开存放项目名称的txt文件

9 with open('content.txt','r',encoding='utf-8') as f:10 word=(f.read())11 f.close()12

13 #图片模板和字体

14 image=np.array(Image.open('ditu.jpg'))15 font=r'C:\\Windows\\fonts\\msyh.ttf'

16

17 #去掉英文,保留中文

18 resultword=re.sub("[A-Za-z0-9\[\`\~\!\@\#\$\^\&\*\(\)\=\|\{\}\'\:\;\'\,\[\]\.\<\>\/\?\~\。\@\#\\\&\*\%]", "",word)19 wordlist_after_jieba =jieba.cut(resultword)20 wl_space_split = " ".join(wordlist_after_jieba)21

22 #设置停用词

23 sw =set(STOPWORDS)24 sw.add("研发")25 sw.add("系列")26 sw.add("这里不多写了,根据自己情况添加")27

28 #关键一步

29 my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color='white',30 max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)31

32 #显示生成的词云

33 plt.imshow(my_wordcloud)34 plt.axis("off")35 plt.show()36

37 #保存生成的图片

38 my_wordcloud.to_file('result.jpg')

其中 ditu.jpg 为安徽省轮廓图片:

1234554-20190108113313396-1540961662.jpg

运行结果:

1234554-20190108113522950-734199643.jpg

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

最后是秘笈揭晓时间:

为什么我这张图如此清晰?打开原图可以看到,这图的分辨率是1800*2500。你用网上的大多数代码,最后生成的图,尺寸很小,上面字迹边缘模糊。

关键在于调用WordCloud时的一个参数,回放一下代码:

1 #关键一步

2 my_wordcloud = WordCloud(scale=4,font_path=font,mask=image,stopwords=sw,background_color='white',3 max_words = 100,max_font_size = 60,random_state=20).generate(wl_space_split)

第一个参数我写的是 scale=4,这个数值越大,产生的图片分辨率越高,字迹越清晰。你可以调到64试试,我希望你的电脑足够快 /笑哭

本文由hATEmATH原创 转载请注明出处:http://www.cnblogs.com/hatemath/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值