一款高颜值的词云包让我拍案叫绝 野性酷女 2023-02-22 10:51 3阅读 0赞 ![format_png][] 相信大家也都通过各种渠道了解了老干妈与鹅厂的爱恨纠缠,当然其中还混入了迷惑行为的“骗子”、吃瓜吃得飞起的“阿里系”以及连称此事与我无关的“某搜索引擎”。 不过这是一篇技术文,所以无心管他到底是谁的老千妈,一心只想给大家介绍这个惊艳的好东西。 ![format_png 1][] 我事先分别用python爬取了腾讯和老干妈的回应微博下的评论(老干妈没有微博,换成了老干妈警方公告下的评论),jieba分词得到结果后,分别制作词云。左边是用经典的wordcloud,右侧则是今天的主角stylecloud。 ## stylecloud简介 ## 对我而言,平时python制作词云主要使用`wordcloud`,如果在可视化的过程还要用`Pyecharts`做其他图,那么词云也干脆就用`Pyecharts`制作了。上一篇文章[《Python爬取弹幕,发现看剧不如爬山?》][Python]中就是用的stylecloud,有同学也觉得颜值颇高,那今天就带大家捋一捋它的使用方法。 stylecloud 是一个 Python 包,一位数据科学家Max Woolf基于wordcloud优化改良而成。并添加了一些有用的功能,从而创建出独特的词云。 ![format_png 2][] 官方示例 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') 生成效果如下: ![format_png 3][] 是不是非常快捷高效,不过对于中文文本我们还是需要先分词再做处理。 ## 蒙版 ## 影响词云颜值的问题之一就是蒙版图片的生成。 自己制作的要么分辨率不统一,要么需要调整对比度,比较麻烦。`stylecloud`是直接使用Font Awesome这个现成的方案,`wordcloud`其实也可以用。 网址:https://fontawesome.com/license/free 在stylecloud \\ static的文件夹中,有一个fontawesome.min.css文件包含了巨量的图标,你可以定期到官方网站去升级这个图标库。\[2\] ![format_png 4][] 打开发现里面包含很多图标的代码,具体长什么样呢? ![format_png 5][] fontawesome.min.css文件内容 多亏有中文网站分门别类罗列了图标的样子和名字, 比如:https://fontawesome.dashgame.com/ 它最新版地址:https://fa5.dashgame.com/\#/%E5%9B%BE%E6%A0%87,图标介绍更详细,分类更全面,不过经常抽风。 ![format_png 6][] 非常多的图标 使用方法如下: ![format_png 7][] 如果我们想要使用小狗的蒙版,只需先查找到它的图标名字`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') 然后我换了一堆小动物的蒙版,生成了如下的词云动图: ![format_png 8][] 部分动物蒙版 其实企鹅并没有在动物里找到,不过我想起来了QQ的图标就是,但是替换后是报错的。原来品牌的图标前缀与其他不同,需要改为`icon_name='fab fa-qq'`,这样就可以啦。 ![format_png 9][] ![format_png 10][] ## 配色 ## 配色是影响词云颜值的又一大问题。`stylecloud`同样找到了比较好的方案,配色方案是使用的高级调色板palettable来实现了。 palettable 网站:https://jiffyclub.github.io/palettable/ 这是一款专业的配色网站,非常适合我们这种对词云的美观有一点小追求的人。 ![format_png 11][] 里面的配色方案超级多,随便点击几个给大家预览一下: ![format_png 12][] 我们可以通过修改参数`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') ![format_png 13][] 部分配色方案 ## 其他参数 ## 以下参数对 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') ![format_png 14][] 封面中的右图 对于颜值要求稍微高一点的同学,可以使用Adobe Photoshop、Adobe Illustrator继续美化图片呦! 本文所有详细数据及代码下载链接: https://alltodata.cowtransfer.com/s/53bee58e15c54b 如果失效,可后台回复“0702”获取最新链接。 对了,封面图左边老干妈的蒙版原图是这个↓ ![format_png 15][] ### 参考文章 ### \[1\] stylecloud的github: *https://github.com/minimaxir/stylecloud* \[2\] 科技爸 | 教你用stylecloud做出专业效果的词云图: *https://zhuanlan.zhihu.com/p/133254264* \[3\] 机器之心编译 | 更改形状和背景色、自定义风格、颜色流动…这款词云工具都能做到: *https://mp.weixin.qq.com/s/L02Ys0bOdySg0ca52DSMTA* ![format_png 16][] [![format_png 17][]][format_png 17 1] [![format_png 18][]][format_png 18 1] ![format_png 19][] 新书兑换限时300积分,阅读原文直达 感谢北京大学出版社的大力支持 别忘了三连哦,小五先谢谢大家了![format_png 20][] [format_png]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZTU80RUVTZTVpYUUwQXp5cTlVaEZpYzBFWlBRRThEMTlnb2hsOHVpYjZHM0ZVTzc3ZFAzbFdHMDNnLzY0MA?x-oss-process=image/format,png [format_png 1]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZTlg2ZUlydnNoazF4NWczMmliTXVGd1NJZ3ZuVk9VTFJsTjlmNzV6aWJwdWlhdTBhWTk5bURnVUZBLzY0MA?x-oss-process=image/format,png [Python]: https://blog.csdn.net/zhuxiao5/article/details/106990963 [format_png 2]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZb0d3ZHFyWTl3djQybWtScDFCaWM2elRpYTVVRUJlTjN0U3ZqaWFvN1Z3a2YxU2VVMEhyeVVvTzJnLzY0MA?x-oss-process=image/format,png [format_png 3]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZMG5kT2RWSWlhRmVXR3FGUlBGMFQ5WXQ3MEVlOXN2VnE2eENwbDI5RUQzelZCRkJWaGN6UldFUS82NDA?x-oss-process=image/format,png [format_png 4]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZRXdzdUhRQm9pYW9Sa1lsTElOMXFhWkY3TXJWRkpMYkxFT2g0QnZ0emV5VXhFVnl0MnJVTkkyQS82NDA?x-oss-process=image/format,png [format_png 5]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZc25oNVEwNDBOUWdzZkxya3l5dVhydU5JOWRqUlFSaWNqUXFXWnJPSUNCdjBadFh0dG5lNWdiZy82NDA?x-oss-process=image/format,png [format_png 6]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZWTZ5b0xpYU9tdHFSbXZpYWljQmRLN3g1c1V0U2ljcnBJOGdpYU1JczBabmZyTVdiRHB0WDdPMkZFZFEvNjQw?x-oss-process=image/format,png [format_png 7]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZeDJTM1VBWWFrSFhRODJpYzdQMXI0RUZQRjZsUWtsTGlicWlieGNVMGRoR01sZjR0V1VJRk5MbWNRLzY0MA?x-oss-process=image/format,png [format_png 8]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZaHg4aWI2cUczN3pET2JqRmNkQ09EdXYxd0NoeUtvOXN6MDRXU0FNc29STFJxYzl4Nnd6WXpyQS82NDA?x-oss-process=image/format,png [format_png 9]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZTmJ3OGpvSlVpY1VYQnR1RUZBdW5wZ0RiZ3NoSjF6d0tGWFpVN21WdVRQckJVaWFPY2JCejFreXcvNjQw?x-oss-process=image/format,png [format_png 10]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZbzhpYWJ2TmRBeU5pYTgwd2liWll3NmJjN2ZpYXlzY05yemppY0E5c1hTWWF2Tkg2NXR4NlFKaGdNWncvNjQw?x-oss-process=image/format,png [format_png 11]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZWkxCdzZLZGtCWlhRb0VsOUNpY2d4MmdKUDY5SHFGMm5uekNXS1hxZDh2Z0dpYW80eHhIcUpFY0EvNjQw?x-oss-process=image/format,png [format_png 12]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZTEgxQjhpYWliMTZ2cUtWU2hhNFpMSWVJSHdmdEd5blZBOTFCT2Zac2tCcXJwT1ZHak00V25WNEEvNjQw?x-oss-process=image/format,png [format_png 13]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZeHZGaWFUOUt2Q0ZHaWJkMmMxN1lMMURDaHdxd1BTRVdObmxPRFZzZGxySkJVVjhZaHpsRWRFYmcvNjQw?x-oss-process=image/format,png [format_png 14]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZYUs0cDdyUWpYODlnaWFmUFBWYURCUFJLMjRBdDJuRWdTYXM2SmxUYVNiam02Mkh4ZTJVb3c4US82NDA?x-oss-process=image/format,png [format_png 15]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZVGlhRnRibTg1djFrYXo1cVQ5UTNQVlFmV0hkMmRQVnVQUnBvaHl3ZFhIMXQ2MWlhQ0lONU9uZEEvNjQw?x-oss-process=image/format,png [format_png 16]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi9uME5PZGpreXBYaWNjcm56N1N2UllQd3dibG5ZeVpVMnhIZnpFdDhWMUxYUEs2aWJyUTlCYVEyWUg3WkZ4M0NiWWtnWGJaZXVQVWM2UE5yQTU3RnUyeThRLzY0MA?x-oss-process=image/format,png [format_png 17]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy90WFlpY3Q0MHhmTGh4Qm1HaHNFejNROEtjRkIxczV2ODFqWFVtWmJ1Q3dBWnBnSzdpYXhtZGwycnVUdVhSNFpseTZvOGliVzYwZHVUenFjTFdNck9zWDRoZy82NDA?x-oss-process=image/format,png [format_png 17 1]: http://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ%3D%3D&chksm=fe4d38abc93ab1bdb128cd7283a9ff09677a59ecef40de15641c6fca2c3b3ea11a74cbd6aff5&idx=2&mid=2247490863&scene=21&sn=4bb7b35d5e97807e14a25762983d99a8#wechat_redirect [format_png 18]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2pwZy90WFlpY3Q0MHhmTGp6a3R0ajJnZWhkUjFidFBER3NVYWcwalBpYXRhUmNsTHBqSHlSa0NNVFczV201bWJzaWNqSHI3TmdiNHQyWmFyRmdrQ2g3eDQzcTdGUS82NDA?x-oss-process=image/format,png [format_png 18 1]: http://mp.weixin.qq.com/s?__biz=MzU5Nzg5ODQ3NQ%3D%3D&chksm=fe4d3819c93ab10f53e84b7d82af83ffd7bc94e8aa178d5dad2b08e9b045a2246059fbe39945&idx=1&mid=2247490973&scene=21&sn=1ddfe6d1e0fc70772bfae270989388c8#wechat_redirect [format_png 19]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X2dpZi90WFlpY3Q0MHhmTGhwZjNzcEJTbkx2Zk56WklaNkVLb0JBYmsxd1d4TTFqaWNZVTQ0clF2c2FvUmN6VHRpYlJTOFVtbWI3Vk1hTldvM1M3cjRnMVlETnduQS82NDA?x-oss-process=image/format,png [format_png 20]: https://imgconvert.csdnimg.cn/aHR0cHM6Ly9tbWJpei5xcGljLmNuL21tYml6X3BuZy90WFlpY3Q0MHhmTGlhM1NSVmpBRExGcjI2NDBkU1JiQXpZZ2xnanFSMnZSRTk5T3NqczlOMWdxNWNqYUNyaWF3Qjl0MWZNU2ljVjhaZDF5ZTBid1J3bk85cHcvNjQw?x-oss-process=image/format,png
还没有评论,来说两句吧...