教你用Python制作炫酷的词云

Aidan075 等级 774 0 0
标签: pythonPython

相信大家也都通过各种渠道了解了老干妈与鹅厂的爱恨纠缠,当然其中还混入了迷惑行为的“骗子”、吃瓜吃得飞起的“阿里系”以及连称此事与我无关的“某搜索引擎”。

不过这是一篇技术文,所以无心管他到底是谁的老千妈,一心只想给大家介绍这个惊艳的好东西。

教你用Python制作炫酷的词云

我事先分别用python爬取了腾讯和老干妈的回应微博下的评论(老干妈没有微博,换成了老干妈警方公告下的评论),jieba分词得到结果后,分别制作词云。左边是用经典的wordcloud,右侧则是今天的主角stylecloud。

stylecloud简介

对我而言,平时python制作词云主要使用wordcloud,如果在可视化的过程还要用Pyecharts做其他图,那么词云也干脆就用Pyecharts制作了。上一篇文章《Python爬取弹幕,发现看剧不如爬山?》中就是用的stylecloud,有同学也觉得颜值颇高,那今天就带大家捋一捋它的使用方法。

stylecloud 是一个 Python 包,一位数据科学家Max Woolf基于wordcloud优化改良而成。并添加了一些有用的功能,从而创建出独特的词云。

教你用Python制作炫酷的词云

官方示例

stylecloud 具备以下特点:[1]

  • 为词云提供(任意大小)的图标形状(通过 Font Awesome 5.11.2 获得);

  • 支持高级调色板(通过 palettable 实现);

  • 为上述调色板提供直接梯度;

  • 支持读取文本文件,或预生成的 CSV 文件(包含单词和数字);

  • 提供命令行接口。

两行代码

stylecloud的对于处理英文词云有个酷炫的功能,可以实现两行代码实现词云,一行导入stylecloud,另外一行直接调用。

不过我们还是要先安装包 ↓

`pip3 install stylecloud  
`

以这里的Trump.txt为例,它是特朗普当选美国总统的演讲稿,直接生成词云。

`from stylecloud import gen_stylecloud  
gen_stylecloud(file_path='Trump.txt')  
`

生成效果如下:

教你用Python制作炫酷的词云

是不是非常快捷高效,不过对于中文文本我们还是需要先分词再做处理。

蒙版

影响词云颜值的问题之一就是蒙版图片的生成。

自己制作的要么分辨率不统一,要么需要调整对比度,比较麻烦。stylecloud是直接使用Font Awesome这个现成的方案,wordcloud其实也可以用。

网址:https://fontawesome.com/license/free

在stylecloud \ static的文件夹中,有一个fontawesome.min.css文件包含了巨量的图标,你可以定期到官方网站去升级这个图标库。[2]

教你用Python制作炫酷的词云

打开发现里面包含很多图标的代码,具体长什么样呢?

教你用Python制作炫酷的词云

fontawesome.min.css文件内容

多亏有中文网站分门别类罗列了图标的样子和名字,

比如:https://fontawesome.dashgame.com/

它最新版地址:https://fa5.dashgame.com/##/%E5%9B%BE%E6%A0%87,图标介绍更详细,分类更全面,不过经常抽风。

教你用Python制作炫酷的词云

非常多的图标

使用方法如下:

教你用Python制作炫酷的词云

如果我们想要使用小狗的蒙版,只需先查找到它的图标名字fa-dog,再加入到参数中icon_name='fas fa-dog'即可。

`stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,  
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',  
                          icon_name='fas fa-dog',  
                          size=400,output_name='词云.png')  
`

然后我换了一堆小动物的蒙版,生成了如下的词云动图:

教你用Python制作炫酷的词云

部分动物蒙版

其实企鹅并没有在动物里找到,不过我想起来了QQ的图标就是,但是替换后是报错的。原来品牌的图标前缀与其他不同,需要改为icon_name='fab fa-qq',这样就可以啦。

教你用Python制作炫酷的词云

教你用Python制作炫酷的词云

配色

配色是影响词云颜值的又一大问题。stylecloud同样找到了比较好的方案,配色方案是使用的高级调色板palettable来实现了。

palettable 网站:https://jiffyclub.github.io/palettable/

这是一款专业的配色网站,非常适合我们这种对词云的美观有一点小追求的人。

教你用Python制作炫酷的词云

里面的配色方案超级多,随便点击几个给大家预览一下:

教你用Python制作炫酷的词云

我们可以通过修改参数palette='配色方案'来达到更改自己词云配色的目的。

`stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,  
                          palette='tableau.BlueRed_6',  
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',  
                          icon_name='fab fa-qq',size=400,  
                          output_name='腾讯-词云.png')  
`

教你用Python制作炫酷的词云

部分配色方案

其他参数

以下参数对 stylecloud Python 函数和 CLI 均有效,你可以通过 stylecloud -h 获取这些参数的信息。[3]

  • text:输入文本。最好在直接调用函数时使用。

  • file_path:输入文本/CSV 的文件路径。最好在 CLI 上使用。

  • gradient:梯度方向。(其默认值是 None,如果它的值不是 None,则 stylecloud 使用了方向性梯度。)[default: None]

  • size:stylecloud 的大小(长度和宽度)。[default: 512]

  • icon_name:stylecloud 形状的图标名称(如 fas fa-grin)。[default: fas fa-flag]

  • palette:调色板(通过 palettable 实现)。[default: cartocolors.qualitative.Bold_6]

  • background_color:背景颜色。[default: white]

  • max_font_size:stylecloud 中的最大字号。[default: 200]

  • max_words:stylecloud 可包含的最大单词数。[default: 2000]

  • stopwords:布尔值,用于筛除常见禁用词。[default: True]

  • output_name:stylecloud 的输出文本名。[default: stylecloud.png]

  • font_path:stylecloud 所用字体 .ttf 文件的路径。[default: uses included Staatliches font]

  • random_state:控制单词和颜色的随机状态。

上面参数由机器之心翻译自stylecloud的github介绍,我就直接引用,不班门弄斧了。

更多详情可以打开链接:https://github.com/minimaxir/stylecloud

小结

最后终于挑选好了自己喜欢的参数,成功生成“腾讯”微博下的评论词云:

`import stylecloud  
from IPython.display import Image   

stylecloud.gen_stylecloud(text=' '.join(text1), collocations=False,  
                          font_path=r'‪C:\Windows\Fonts\msyh.ttc',  
                          icon_name='fab fa-qq',size=400,  
                          output_name='腾讯-词云.png')  
Image(filename='腾讯-词云.png')  
`

教你用Python制作炫酷的词云

封面中的右图

对于颜值要求稍微高一点的同学,可以使用Adobe Photoshop、Adobe Illustrator继续美化图片呦!

本文所有详细数据及代码下载链接:

https://alltodata.cowtransfer.com/s/53bee58e15c54b

如果失效,可后台回复“0702”获取最新链接。

对了,封面图左边老干妈的蒙版原图是这个↓

教你用Python制作炫酷的词云

参考资料

[1]

stylecloud的github: https://github.com/minimaxir/stylecloud

[2]

科技爸 | 教你用stylecloud做出专业效果的词云图: https://zhuanlan.zhihu.com/p/133254264

[3]

本文转转自微信公众号快学Python原创https://mp.weixin.qq.com/s/HH7c0az9AJEpWfgpJVel0w,可扫描二维码进行关注: 教你用Python制作炫酷的词云 如有侵权,请联系删除。

收藏
评论区

相关推荐

教你用Python制作炫酷的词云
相信大家也都通过各种渠道了解了老干妈与鹅厂的爱恨纠缠,当然其中还混入了迷惑行为的“骗子”、吃瓜吃得飞起的“阿里系”以及连称此事与我无关的“某搜索引擎”。 不过这是一篇技术文,所以无心管他到底是谁的老千妈,一心只想给大家介绍这个惊艳的好东西。 (https://imghelloworld.osscnbeijing.aliyuncs.com/4
被“词云”包围的冰冰会更好看吗?安排
(https://imghelloworld.osscnbeijing.aliyuncs.com/b299933deefc692934e8cc6141ab3894.png) 大家好,我是小五🐶 昨天「凹凸数据」发了一篇张同学投稿的文章《用Python爬取王冰冰vlog弹幕并制作词云(https://mp.weixin.qq.com/
1年前的小五都用 Python 来做什么?
↑ 点击上方 “凹凸数据” 关注 + 星标  每天更新,干货不断   (多图预警) 注:这是小五一年前在知乎的回答,当时还只有凹凸数读一个公众号,所以很多图片都会带有数读或者知乎的水印。 作为一个菜鸟数据分析师,只会sql+python业余时间写写文章:用python爬取数据→数据清洗→数据分析→数据可视化词云镇楼20190730回来看,前面
手把手教你使用Python打造绚丽的词云图
前言大家好,我是黄伟。词云,相信大家对这个概念比较陌生,它其实就是指的是对某一段文本中出现频率最高的关键词进行特殊描绘,过滤到太多没用的字眼,以此达到视觉上的突出,让人一看就知道这篇文章讲的什么。 一、词云的运用设计到的模块:wordcloud编辑器:sublime text 3编译器:Python 3.6 1.下载安装wordcloud模块pip ins
牛批了,1行python代码就可实现炫酷可视化
之前画图一直在用matlibplot、pyecharts,最近学习了一个新的可视化库cufflinks,用了两天我已经深深爱上它了 主要是因为它用法简单、图形漂亮、代码量少,用一两行代码,就能画出非常漂亮的图形下面我们一起来看看吧! 1.用法简单cufflinks库主要和dataFrame数据结合使用,绘图函数就是 dataFrame.iplot,记
CentOS升级Python到2.7版本
查看python的版本 python -V Python 2.4.3 1.先安装GCC yum -y install gcc 2.下载Python-2.7.2 wget http://python.org/ftp/python/2.7.2/Python-2.7.2.tar.bz2 3.解压Python-2.7.2
FreeBSD python安装MySQL
fetch https://pypi.python.org/packages/source/M/MySQL-python/MySQL-python-1.2.4.zip unzip MySQL-python-1.2.4.zip cd MySQL-python-1.2.4 python setup.py install ln -s /usr/loca
Python 3 教程
Python 3 教程 =========== ![python3](https://www.runoob.com/wp-content/uploads/2014/05/python3.png) Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,
Python 什么是元类(metaclasses)?
**1.什么是类** ---------- 在理解元类之前,我们必须先掌握Python中的类(class)。 和大多数语言一样,Python中的类知识用来描述如何“生成一个对象”: ![](https://oscimg.oschina.net/oscnet/8c9c532a-0949-42bf-9a21-833c7b247338.png) 但是
Python 全栈开发
**如果你已经玩转了 Python 编程语言语法,肯定想用这些知识,开发一款应用程序,它可以是在网上,可以炫耀或出售,那就需要全栈式开发 Python。具体如何创建,部署和运行生产 Python Web 应用程序,参考 [Full Stack Python](https://www.oschina.net/action/GoToLink?url=https%
Python 常用单词
Python常用单词(英文好的人自动忽略) --------------------- 单词 发音 翻译 作用 print 普润特 打印 显示我们想要查看的内容 input 因普特 输入 获取用户输入的一些内容 int 印特 整型 将有引号的数字加工成没有引号的 str str 字符串 将内容加工成带引号的数据 bo
Python基础语法题库
**引言:** **语法练习包括Python基础语法、数据类型、字符编码和简单文件操作等内容。** **正文**(参考答案附录在题目下方): 1、Python 里用来告知解释器跳过当前循环中的剩余语句,然后继续进行下一轮循环,此关键词是__。 ![](https://oscimg.oschina.net/oscnet/f1857bbc309
Python数据可视化
Python数据可视化 -- Wordcloud ------------------------ ### 安装 启动命令行,输入:pip install wordcloud ### word cloud 库介绍 及简单使用 wordcloud库,可以说是python非常优秀的词云展示第三方库。词云以词语为基本单位更加直
Python生成词云
1 概述 ==== 利用Python生成简单的词云,需要的工具是cython,wordcloud与anaconda. 2 准备工作 ====== 包括安装cython,wordcloud与anaconda. 2.1 安装anaconda -------------- [下载官网](https://www.oschina.net/action/GoT
Python进阶丨如何创建你的第一个Python元类?
> **摘要:**通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。 Python元类设置类的行为和规则。元类有助于修改类的实例,并且相当复杂,是Python编程的高级功能之一。通过本文,将深入讨论Python元类,其属性,如何以及何时在Python中使用元类。本文介绍以下概念: * * 什么是Python元类?