在数据可视化方面,词云一直是一种视觉冲击力很强的方式。对输入的一段文字进行语义分割,得到不同频度的词汇,然后以正比于词频的字体大小无规则的集中显示高频词,简洁直观高效。

词云虽好,但也要易做才行。本文探索了3种生成词云的方式:

  • 在线工具

  • 软件工具

  • 编程工具


00 数据来源

春节期间,NBA传奇巨星科比·布莱恩特意外坠机身亡,引得无数球迷无限惋惜。我们写了一个小爬虫抓取了豆瓣上科比记录片的评论信息,以此作为文本分析的数据来源,向曼巴致敬。(豆瓣搜索"曼走 科比《告别》"即可)


01 生成词云之在线工具

搜索词云在线生成工具,会得到很多结果,包括国内外的网站平台都有。对比了搜索较为靠前的几款在线工具,但或多或少都存在一些使用上瑕疵,有的是网页加载慢,有的是要注册后方可使用,有的是字体支持较差,还有的是要付费使用。

当然,毕竟是要使用方便快捷有效的,而且最好还是免费的就完美了。对比之后,感觉这两个平台还算相对好用:

  • WordArt

    • 优点:无需注册即可使用;对热词数量无限制;支持个性化配置,包括热词、字体、形状等;在线词云支持交互查看

    • 缺点:英文操作界面,部分用户使用不便,加载较慢;字体支持差,中文仅有一种支持字体,且因权限问题可能无法添加本地字体

默认字体库仅有一种字体支持中文

  • 微词云

    • 优点:支持自动文本分析;有大量形状模板,也支持自定义模板;图片色彩多样,包括渐变色;支持大量字体;操作简单

    • 缺点:需注册后方可使用;免费使用下载图片有水印;对热词数量有限制

支持大量个性化配置

2个在线平台生成的词云结果:

WordArt在线生成(个别中文仍有乱码)

微词云在线生成(中间实际有水印)


02 生成词云之软件工具

网页在线工具和桌面软件在生成词云这项任务上,本无实质差别,甚至很多平台是既支持在线生成也有桌面客户端软件。

为了区别于网页在线生成词云的方式,这里选用了商业智能分析工具Tableau作为桌面软件的代表来制作词云。虽然词云可能算不上是Tableau的主业。

用Tableau生成可视化图表一向比较简单,制作词云也不例外。将数据源加载进Tableau界面后,简单的点击设置即可。

"热词"是所有词源,"次数"是频度

实际上,用Tableau制作词云的输入数据不是文本,而是经处理后的两列结果数据。从这个角度来说,Tableau生成词云的方式甚至有些低级,严格讲只能称的上是对筛选和统计完毕后的文本进行可视化显示而已。

不过也容易想到其非常方便的应用场景,例如提供了若干个商品名称及其销售额的数据,则可通过词云中商品名的大小直观显现各自收益占比。

Tableau制作词云的优缺点:

  • 优点:操作极其简单;词云界面可交互,便于二次筛选

  • 缺点:输入源要求完成词频统计;个性化设置程度较低;热词大小对比度较差

提供统计完毕后的热词数据,利用Tableau生成词云结果:

Tableau生成的词云算不上出众


03 生成词云之编程工具

很多编程工具均可生成词云,Python自然也不例外。

  • wordcloud

wordcloud是Python专门用于制作词云的第三方库,使用前需安装,而且这个安装过程往往会隐藏一些坎坷。利用wordcloud生成词云非常简单,可以通过大量的参数设置来个性化定制词云效果。

虽然wordcloud自带切分词处理能力,但鉴于其切分效果一般,所以往往还是会配套使用jieba库来进行切分,而后再用空格连接(wordcloud在处理切分时优先使用空格作为分隔符)

示例源码:

import jiebaimport wordcloudimport matplotlib.pyplot as pltword_list = jieba.lcut(words)   # 结巴词库切分词word_list = [word for word in word_list if len(word.strip())>1]#清洗一个字的词word_clean=" ".join(word_list)import imageiomask=imageio.imread(r'kobe.jpg')wc = wordcloud.WordCloud(font_path = "simkai.ttf",#指定字体类型                        background_color = "white",#指定背景颜色                        max_words = 200,  # 词云显示的最大词数                        max_font_size = 255,#指定最大字号                        mask = mask) #指定模板wc = wc.generate(word_clean)##生成词云plt.imshow(wc)plt.axis("off")plt.show()"""Wordcloud详细参数设置def __init__(self, font_path=None, width=400, height=200, margin=2,    ranks_only=None, prefer_horizontal=.9, mask=None, scale=1,    color_func=None, max_words=200, min_font_size=4,    stopwords=None, random_state=None, background_color='black',    max_font_size=None, font_step=1, mode="RGB",    relative_scaling='auto', regexp=None, collocations=True,    colormap=None, normalize_plurals=True, contour_width=0,    contour_color='black', repeat=False,    include_numbers=False, min_word_length=0):"""

查阅wordcloud的官方文档可以发现,其自带参数设置非常丰富,比如以下几个有用功能:

  • font_path:设置字体

  • mask:设置词云模板

  • stopwords:停用词列表

给出wordcloud3种不同方式生成词云结果:

利用文本直接生成词云

利用 jieba 分词后生成词云

设置词云模板mask后效果

  • PyEcharts

除了wordcloud专门用于生成词云的第三方库外,python的另一个可视化库Pyecharts也支持生成词云,即pyecharts库下的wordcloud子类。

不过,与Tableau生成词云的方式类似,pyecharts也要求输入的数据是经过筛选和统计好的数据,例如经过jieba分词+counter统计后得到的结果,即可非常方便的应用pyecharts制作词云。而且,pyecharts的所有图表均可交互,词云图也不例外,这也算是它的一项优势。

示例源码:

import jiebafrom collections import Counterfrom pyecharts.charts import WordCloud

word_list = jieba.lcut(words)   # 切分词word_list = [word.strip() for word in word_list if len(word.strip())>1]wordCount = Counter(word_list)wc = WordCloud()wc.add("", wordCount.items(), word_size_range=[20, 100])wc.render(r'kobe.html')"""def add(    self,    series_name: str,    data_pair: types.Sequence,    *,    shape: str = "circle",    word_gap: types.Numeric = 20,    word_size_range: types.Optional[types.Sequence] = None,    rotate_step: types.Numeric = 45,    tooltip_opts: types.Tooltip = None,    itemstyle_opts: types.ItemStyle = None,):"""

查阅其add方法,可以了解生成词云的一些设置参数,不过相比wordcloud库来说,pyecharts的wordcloud设置参数实在是太有限了。

提供统计后的数组,利用pyecharts生成的词云结果:

pyecharts生成的词云图片看上去有些过于"规矩",字体旋转角度单一(通过rotate_step参数设置),字号大小对比也不够明显。

04 结论

  • 词云作为数据可视化的一种常用手段,视觉冲击力较强,制作方法也比较灵活多样

  • 普通的词云制作需求依托在线工具即可有效满足,国内外均有相关工具

  • Tableau作为商业智能分析软件,在制作词云上表现并不出众,但极为快捷方便

  • Python编程实现词云可进行大量的个性化定制,包括分词、过滤、图片模板和文字设置,都有大量参数可供调节

  • 除wordcloud用于专门生成词云外,pyecharts的wordcloud子库也有着不错的效果,且支持交互

作者:luanhz

来源:小数志


html生成word附带图片_生成词云的几种方式对比相关推荐

  1. js实现word生成书签_js生成word中图片处理方法

    首先功能是要求前台导出word,但是前后台是分离的,图片存在后台,所以就存在跨域问题. 导出文字都是没有问题的(jquery.wordexport.js),但是导出图片就存在问题了: 图片是以链接形式 ...

  2. catia钣金根据线段折弯,CATIA钣金实例教程_生成棱边弯曲_生成局部折叠或展开

    CATIA钣金实例教程_生成棱边弯曲_生成局部折叠或展开,使用 5.3 节的钣金零件.模型如图 5-40. @PLONQ9KOT2[YI0M)I9MT05.png (62.9 KB, 下载次数: 82 ...

  3. POI读取word文件,(支持HSSF和XSSF两种方式)

    POI读取word文件,(支持HSSF和XSSF两种方式) 参考:HSSF,XSSF,SXSSF三种方式 1.引用maven(版本必须一致) <dependency><groupId ...

  4. java生成word 带表格_【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  5. java生成word 可变表格_【java】Freemarker 动态生成word(带图片表格)

    1.添加freemarker.jar 到java项目. 2.新建word文档. 3.将文档另存为xml 格式. 4.将xml格式化后打开编辑(最好用notepad,有格式),找到需要替换的内容,将内容 ...

  6. python词云需要导入什么包_[python] 词云:wordcloud包的安装、使用、原理(源码分析)、中文词云生成、代码重写...

    词云,又称文字云.标签云,是对文本数据中出现频率较高的"关键词"在视觉上的突出呈现,形成关键词的渲染形成类似云一样的彩色图片,从而一眼就可以领略文本数据的主要表达意思.常见于博客. ...

  7. poi word插入图片_豌豆BI工具看板Word导出技术详解

    Word是最常见的文档编辑工具,当数据分析完成之后,将分析数据的图表在Word中展现,进行汇报或者存档是非常具有现实意义.在此背景之下,全新的Word导出,在豌豆BI 2.1.2 中与大家见面了. 本 ...

  8. php生成word设置纸张,PHP生成Word文档的方法

    首先,请确保在你的Windows系统中已经安装并配置好了一个典型的WAMP环境.由于Interop纯粹是一个Windows的特性,我们将在Windows平台下搭建Apache和PHP,下面,小编为大家 ...

  9. eoLinker-API_Shop_验证码识别与生成类API调用的代码示例合集:六位图片验证码生成、四位图片验证码生成、简单验证码识别等...

    以下示例代码适用于 www.apishop.net 网站下的API,使用本文提及的接口调用代码示例前,您需要先申请相应的API服务. 六位图片验证码生成:包括纯数字.小写字母.大写字母.大小写混合.数 ...

最新文章

  1. IT PRO的职业生涯
  2. php appl_physical_path,PHP的一些面试题
  3. 会声会影如何渲染高清视频
  4. ios 自定义拍照页面_vivo X27只靠颜值和拍照吃饭?体验过后你也会被系统所折服...
  5. android 自定义view滚动条,Android自定义View实现等级滑动条的实例
  6. c# 结构体 4字节对齐_C语言程序员们常说的“内存对齐”,究竟有什么目的?
  7. 图像处理基本概念——卷积,滤波,平滑
  8. OAuth2.0(基于django2.1.2实现版本)
  9. Linux系统管理(8)——Ubuntu安装ssh服务 以及版本查看命令
  10. 小瓦怕扫地机器人_小瓦扫地机器人青春版评测:便宜有好货
  11. 安装php_sqlsrv扩展
  12. 固定资产分类(仅供参考 2005年),
  13. Centos/Linux 源码安装wireshark与tshark任意版本
  14. 视频教程-Linux C语言编程基础视频精讲-C/C++
  15. BSC-币安智能链主网节点搭建(详细步骤)
  16. 2月19日CTF记录
  17. java项目学生量化管理考核细则_班级管理量化考核细则范本
  18. 为什么电脑安装qq后显示没网络连接服务器,能上QQ电脑却无法上网怎么解决
  19. Android开发基础——RecyclerView
  20. 04-dropbear

热门文章

  1. idea-解决安装及各种问题
  2. python3爬取中国药学科学数据
  3. 《高性能科学与工程计算》—— 导读
  4. 【Computer Organization笔记24】光盘,FLASH MEMORY,本单元总结
  5. 在Eclipse中,如何将项目中的src/main/java目录设置为源代码包?
  6. 十进制转二进制 / 八进制 / 十六进制的手算方法,及其数学原理的通俗解释
  7. ajax css文件,wordpress 添加JS,css文件,实现AJAX效果
  8. Windows Server 2008 \u0026 2012在GCE上正式商用了
  9. mfc 学习的第二天
  10. ORA-01427: 单行子查询返回多个行 出现原因及对应防止措施