作者:黎智煊 叩丁狼高级讲师。原创文章,转载请注明出处。
前言:现在制作一个词云图还是简单的事,
例如这个-> https://wordart.com (选择Noto Sans S Chinese Regular字体就可以制作中文词云),然后选择”SHAPES”可以导入自己想制作词云形状图片,记得这个图片不要太复杂,颜色比较单一.
but,图样图森破,不是各种限制就是收费了,真的是调理农 所以这里教大家用10行python代码搞掂.**
hey we go(黑喂狗) XD XD XD XXD :) :) :) :) :) :)
环境的准备(由于苹果电脑贵,so我们还是建立在window环境下搭建,其实都是大同小异)
- 下载并且安装python3.6 https://www.python.org/ftp/python/3.6.5/python-3.6.5.exe
- 点击选择Customize installation,默认全选,然后下一步
- 请记得勾选第一个“Install for all user”,就是全部用户都安装(意思是装到系统盘的program目录)
- 还有请勾选“Add python to environment variables”,这一步是设置python的环境变量
- 然后就可以开始安装.
- 安装一些依赖
- 我准备了一些编译好的python库文件,在这里 链接:https://pan.baidu.com/s/1Z3qBb9KGVLtgBt4lKBB22A 密码:mabu
里面一共有5个文件,其实只需要下载3个就可以了 - 先下载msyh.ttc,这个是微软雅黑字体,下载到下面两个文件同一个目录就可以了.
- 上面提供的python是32位的,所以直接下载带有后缀名 -win32.whl的这两个文件就可以了.
- 下载好以后,解压好到随便一个目录,比如是F盘的python文件夹,你打开cmd.exe,并且切换到F盘的python目录,例如:
没有出错就没有大问题了.F: cd python pip install wordcloud-1.4.1-cp36-cp36m-win32.whl pip install wrapt-1.10.11-cp36-cp36m-win32.whl
- 利用pip安装一些依赖
pip install jieba pip install matplotlib pip install pillow pip install numpy
- 我准备了一些编译好的python库文件,在这里 链接:https://pan.baidu.com/s/1Z3qBb9KGVLtgBt4lKBB22A 密码:mabu
新建一个新的目录
- 随便找个地方新建一个目录,比如我在F盘下面新建一个word_cloud文件夹(名字都是随便取),并且打开这个文件夹.
- 把刚刚下载的msyh.ttc复制到这里.
- 新建一个my_word_cloud.py在这里.
然后可以在my_word_cloud.py写代码了,首先导入相关的包
##对于NLP(自然语言处理)来说,分词是一步重要的工作,这里使用jieba分词 ##对你输入的文章进行分词然后统计等等操作 import jieba ##导入用于用于制作词云图的wordcloud from wordcloud import WordCloud,ImageColorGenerator from matplotlib import pyplot as plt from PIL import Image import numpy as np
收集文本信息
比如,我现在随便找一篇文章,里面包含大量文字
为什么《钢之炼金术师FA》被称为神作?
想要两者兼得非常难,要说明它的难度,得举个没做到又有分量的作品为例子:老贼的《猎人》《钢炼》是一部涵盖面很广的作品,其中想要探讨的,有人性、战争、宗教、哲学、科学,但受限于【少年漫】这一题材,探索的面虽然广却基本不深入。真正让《钢炼》显得极为成熟的,是“态度“…………..然后,把这些文字复制并且保存为info.txt,就保存在word_cloud文件夹里面
继续编辑代码
##打开刚刚的info.txt,并且把得到的句柄内容复制给content with open('info.txt','r',encoding="UTF-8") as file1: content = "".join(file1.readlines()) ##然后使用jieba模块进行对文本分词整理 content_after = "".join(jieba.cut(content,cut_all=True)) ##font_path ##使用worldCloud模块对刚刚整理好的分词信息进行处理. ##max_font_size参数是可以调整部分当个词语最大尺寸 ##max_words是最大可以允许多少个词去组成这个词云图 ##height高度,width宽度, ##background_color背景颜色 wc = WordCloud(font_path="msyh.ttc",background_color="black",max_words=1000,max_font_size=100, width=1500,height=1500).generate(content) ##使用matplotlib的pyplot来进行最后的渲染出图. plt.imshow(wc) ##目标文件另存为这个名录下 wc.to_file('wolfcodeTarget.png')
运行代码
- OK.把两段代码都输入并且保存之后,同样,用cmd.exe切换到这个目录,(有一个快捷的方式,就是按shift+右键,就可以看到”在此处打开XX窗口”),然后直接输入
python word_cloud.py
运行命令成功之后大概有这些提示
Building prefix dict from the default dictionary ... Loading model from cache C:\Users\KUMANX~1\AppData\Local\Temp\jieba.cache Loading model cost 0.592 seconds. Prefix dict has been built succesfully.
然后稍等片刻,你就可以看到一个新的图片文件生成了,wolfcodeTarget.png
sorry,我骗你了,是总的代码是11行的.(sorry,有钱真系大晒)
- OK.把两段代码都输入并且保存之后,同样,用cmd.exe切换到这个目录,(有一个快捷的方式,就是按shift+右键,就可以看到”在此处打开XX窗口”),然后直接输入
咩?一大坨没有形状不好看?别急.唔好急,心急食唔到热豆腐啊靓仔靓女
首先你编辑好一张图片,最好简单点,比如说这张
然后,你把这张图命名好放到刚刚的文件夹,就是F盘的word_cloud文件夹里面,我的命名是wolfcode.png
然后添加代码,备注我自己写里面,我下面展示的是一个完整的代码
import jieba from wordcloud import WordCloud,ImageColorGenerator from matplotlib import pyplot as plt from PIL import Image import numpy as np with open('info.txt','r',encoding="UTF-8") as file1: content = "".join(file1.readlines()) content_after = "".join(jieba.cut(content,cut_all=True)) ##添加的代码,把刚刚你保存好的图片用Image方法打开, ##然后用numpy转换了一下 images = Image.open("wolfcode.png") maskImages = np.array(images) ##修改了一下wordCloud参数,就是把这些数据整理成一个形状, ##具体的形状会适应你的图片的. wc = WordCloud(font_path="msyh.ttc",background_color="black",max_words=1000,max_font_size=100,width=1500,height=1500,mask=maskImages).generate(content) plt.imshow(wc) wc.to_file('wolfcodeTarget.png')
然后运行
python word_cloud.py
OK!你控几不住你记几啊,新的词云图已经生成了.你打开wolfcodeTarget.png看看.
- I Don’t konw what 7 you said!