作者: afenxi来源: afenxi时间:2017-07-20 10:13:55
摘要:现在你也可以在R语言中绘制多样的词云了。wordcloud2是基于wordcloud2.js封装的一个R包,使用HTML5的canvas绘制。浏览器的可视化具有动态和交互效果,相对于曾经的R包worldcoud,wordcloud2还支持任意形状的词云绘制,这也是我一直想要寻求的特性。
现在你也可以在R语言中绘制多样的词云了。wordcloud2是基于wordcloud2.js封装的一个R包,使用HTML5的canvas绘制。浏览器的可视化具有动态和交互效果,相对于曾经的R包worldcoud,
wordcloud2还支持任意形状的词云绘制,这也是我一直想要寻求的特性。
安装&示例
从github安装wordcloud2包:
if (!require(devtools)) install.packages("devtools") devtools::install_github(lchiffon/wordcloud2)
包内含有两份data.frame格式的词频数据:英文版的demoFreq和中文版的demoFreqC,使用wordcloud2直接绘制即可。若需要绘制自己的词频数据,只需构造一个类似的数据框即可,第一列代表词语,第二列存贮相应的词频。
library(wordcloud2) wordcloud2(demoFreqC) wordcloud2(demoFreq) ## 一个粗糙的例子 # df = data.frame(letters, rpois(26, 20)) # wordcloud2(df) 定制颜色
这里的颜色包括背景色和词语颜色,分别对应backgroundColor和color两个参数。这两个参数可以接受CSS认可的任意的参数值,如red,blue或者rgb(0,0,0)以及十六进制的#ff2fe9等。
另外color参数有更多可接受的参数:
内置的随机色生成方案:random-light和random-dark,在javasript里定制了相应的随机函数 javasript回调函数: 用js撰写任意的颜色生成函数,如
js_color_fun = "function (word, weight) ") wordcloud2(demoFreq,hoverFunction = hoverFunction)
这一部分就是纯粹的js了,有能力或有兴趣想要做些不一样效果的,可以瞅瞅源代码中的hover.js。
结语
最后,想要更多的细节调试可以参见wordcloud2作者的介绍以及wordcloud2.js的API文档。
感谢wordcloud2作者郎大为老师和wordcloud2.js的作者timdream。有兴趣和有能力的朋友可以读读源代码,开开脑洞做些改进,如提升下绘图速度(改进wordcloud2.js的算法),组合多个词云等。
作者:杜亚磊
链接:http://yalei.name/