突发!员工跳楼!只拿低保工资!央企设计院集体罢工!

突发!北京某院集体罢工!

淄博向东,惠泊向西:在人民与人民币之间,惠泊停车选择了人民币

【少儿禁】马建《亮出你的舌苔或空空荡荡》

10部适合女性看的唯美情色电影

生成图片,分享到微信朋友圈

自由微信安卓APP发布,立即下载! | 提交文章网址
查看原文

可能是目前最好的词云解决方案wordcloud2

郎大为 统计之都 2023-01-25

:广大的段子手朋友们,下次再用R做词云的时候,记得在wordcloud后面加个2
无论是install.packages("wordcloud2")
还是library(wordcloud2)
或者wordcloud2(data)
留下一个无法辩驳的理由,作为一个有情怀的语言,主函数的第一个变量不应该是data.frame么?

最近写了一个wordcloud2的R包。调用一个JS的库(wordcloud2.js)实现wordcloud。 与旧的wordcloud相比,新的wordcloud2 能更有效的利用词与词的间隔来插入数据,更可以根据图片或者文字来绘制定制化的词云。

install.packages("wordcloud2")
library(wordcloud)
library(wordcloud2)
wordcloud(demoFreq$word, demoFreq$freq)
wordcloud2(demoFreq)

由于使用了Rstudio出品的htmlwidgets框架,knitr和shiny也都支持。以下是wordcloud2包的一个基本介绍。基本的函数有两个:

  1. wordcloud2: 提供基本的词云功能

  2. letterCloud: 使用选定的词绘制词云(就像刚才那个wordcloud2的图片)

为了文章的流畅性,详细的使用参数我就不细说了,可以去看下我留在CRAN的文档。下面会给大家介绍三种模式,按需选择。

  • 懒人模式:默认参数,顺便自己可以调一调颜色角度什么的;

  • 自定义模式:根据字符来生成词云;

  • 极客模式:根据输入的图片来生成同样形状的词云。


1
1. 懒人模式
开启懒人模式之后,玩家可以把准备好的数据框(第一列词名,第二列词频)扔给wordcloud2函数,wordcloud2会自动处理,生成一个动态的页面。就像上面那幅和wordcloud对比的图片一样
统计之都(COS)的词云

wordcloud2的包里面存了一个词与词频的数据,是从统计之都的订阅抓出来的信息,并做了分词和词频表。数据的名字是demoFreqC。

data("demoFreqC")
head(demoFreqC)
       V2   V1 1     数据 2304 3     统计 1413 4     用户  855 5     模型  846 7     分析  773 8 数据分析  750

使用wordcloud对这个数据进行可视化,颜色使用的是亮色随机,背景是灰色。

# Windows
# Sys.setlocale("LC_CTYPE","eng")
wordcloud2(demoFreqC, color = "random-light", backgroundColor = "grey")


2
自定义模式

自定义模式允许用户去设定一个字符,然后根据这个字符,生成一个形状相同的词云,比如下面的两个例子。

wordcloud2做的头像
htmlwidgets gallery是一个展示各种引用js做可视化R包的平台。几周前我把wordcloud2传了上去,为了让大家更好的认识我,我把我微博的头像作为展示图传了上去,就像这样:

这个头像也是用本包实现的,使用lettercloud完成,letter="R"选择了字符R的形状,颜色随机亮色,背景黑色,大小选的是0.3。数据是自己编的一个文件,可以在这里下载。

dat = read.csv("chiffon.csv",header = T)
dat = dat[,2:3]
letterCloud(dat,letter = "R", color = "random-light", backgroundColor = "black",size = 0.3)
淘宝卖什么

亚磊顺手爬了淘宝搜索“男”或者“女”的结果, 用letterCloud生成的词云,你以为这是用图片做的形状么?实际上是用了一个showtext包来实现的特殊字符。有代码有真相,大家慢慢读。(链接: http://yalei.name/2016/06/wordcloud2)


3
极客模式

说实话,很多时候字母什么的并不能满足段子手的需求,有时候需要根据自己的图片来生成一个定义好形状的词云,wordcloud2里面也是支持的,只需要给wordcloud2传一个图片路径就好了,是不是很容易?

一只小蓝鸟

wordcloud2函数支持输入自定义图片来作为词云的背景形状,需要注意的是自己定义图片的时候需要“黑白”的来作为词云的形状输入。本文使用了该包自带的一个小鸟图片。

figPath = system.file("examples/t.png",package = "wordcloud2")
wordcloud2(demoFreq, figPath = figPath, size = 1.5,color = "skyblue")



蜘蛛侠
浩彬老撕绘制的蜘蛛侠,是不是很帅气?

A&Q

  • 没错,可以用CRAN进行安装了,猛击此处。

  • 绘制出来的结果有交互效果,鼠标移到一个词上可以看到词频。

  • 刚开始的时候有一个shape变量,可以画五角星,心形等形状的词云,后来开发出了基于图片的词云,已经开始嫌弃这个功能了:)

  • 中文乱码的问题

    • 如果是windows需要Sys.setlocale("LC_CTYPE","eng")

    • 输入的文字需要是中文

  • Studio抽风的问题

    • 有时候第一次使用带图片或者文字的词云,Rstudio可能不显示

    • 需要手动刷新或者在浏览器中打开

  • 大小不满意

    • 调Size

    • 浏览器打开,调成你喜欢的大小,刷新!

  • 对了,点赞是在这里:https://github.com/Lchiffon/wordcloud2


作者简介
郎大为,坐标上海,现任J.D. POWER数据分析师,工作领域为汽车行业的咨询。REmap,wordcloud2包的作者。不写R包的全栈不是好分析师…


                                                       

审稿:高涛

编辑:王健桥



版权公告



原创文章,版权所有。

敬告各位友媒,如需转载,请与统计之都小编联系(直接留言或发至邮箱:editor@cos.name ),获准转载的请在显著位置注明作者和出处(转载自:统计之都),并在文章结尾处附上统计之都二维码。





统计之都:专业、人本、正直的中国统计学门户网站。

关注方式:扫描下图二维码。或查找公众帐号,搜索 统计之都 或 CapStat 即可。


往期推送:进入统计之都会话窗口,点击右上角小人图标,查看历史消息即可。


统计之都欢迎诸位看官积极投稿,投稿信箱contact@cos.name



文章有问题?点此查看未经处理的缓存