今天我们为大家介绍一个简单的词云图绘制的R包wordcloud2,这个包借助shiny框架实现了图像的可交互。废话不多说,接下来我们看下它的使用。
首先是包的安装,这个地方我们不得不说,建议使用devtools进行安装不然后面的自定义形状图形无法绘制:
library(devtools)
devtools::install_github("lchiffon/wordcloud2")
其中主要的核心函数是wordcloud2,其具体的参数如下:
(1) words—关键词列表
(2) freq—关键词对应的词频列表
(3) scale—字号列表。c(最大字号, 最小字号)
(4) min.freq—最小限制频数。低于此频数的关键词将不会被显示。
(5) max.words—限制词云图上关键词的数量。最后出现在词云图上的关键词数量不超过此限制。
(6) random.order—控制关键词在图上的排列顺序。T:关键词随机排列;F:关键词按频数从图中心位置往外降序排列,即频数大的词出现在中心位置。
(7) random.color—控制关键词的字体颜色。T:字体颜色随机分配;F:根据频数分配字体颜色。
(8) rot.per—控制关键词摆放角度。T:水平摆放;F:旋转90度。
(9) colors—字体颜色列表
(10) ordered.colors—T:按照指定的顺序给出每个关键词字体颜色F:任意给出字体颜色。
(11) hoverFunction—可以实现对鼠标放在对应的词上面所显示的内容,或者产生的动作。
(12) backgroundColor—绘图画布的背景颜色,可以自行设置,默认为白色。
(13)figPath—这是一个神器,可以让你的词云图按照你输入的图像的性状进行词的分布。
下面我们来看几个实例:
1. 基础的词云图绘制:
wordcloud2(demoFreq)
2. 我们修改词云图的形状,通过shape进行包自带的形状的转化:
wordcloud2(demoFreq, size = 1,shape ='star')
3. 当然更高级性状转化那就是我们自定义了,当然作者为我们考虑到了我们可能需要一些字母的形状,所以它还提供了一个函数letterCloud帮我们将字母转化为图像:
letterCloud(demoFreq,"R")
接下来我们就用我们生成的这个形状进行我们词云图的绘制:
wordcloud2(demoFreq, figPath ="G:/5.png")#此处图形的外框还是使用的默认的圆形。
4. 最后的大招就是图形的交互体验,这个在这里我们没法去演示,给大家一个实例代码,这个代码主要是当我们将鼠标移动到一个词上时,就会显示我们输入的信息:
hoverFunction =htmlwidgets::JS("function onclick() {alert(‘欢迎大家学习交流’);}")
wordcloud2(demoFreq,hoverFunction =hoverFunction)