续上篇文章,总结下wordcloud2包,主要的函数包括wordcloud2()和letterword(),其中wordcloud2函数用于生成文字云,而letterword能将词云设置成文字形状,接下来分别介绍这两个函数。
wordcloud2(data, size = 1, minSize = 0, gridSize = 0,
fontFamily = 'Segoe UI', fontWeight = 'bold',
color = 'random-dark', backgroundColor = "white",
minRotation = -pi/4, maxRotation = pi/4, shuffle = TRUE,
rotateRatio = 0.4, shape = 'circle', ellipticity = 0.65,
widgetsize = NULL, figPath = NULL, hoverFunction = NULL)
主要参数介绍:
(1) data: A data frame including word and freq in each column
(2) size:Font size, default is 1. The larger size means the bigger word.
(3) fontFamily:字体,如"Aril"
(4) fontWeight:字体粗细,例如normal、bold、600
(5) color:字体色系,可以选"random-dark"或"random-light"
(6) backgroundColor:Color of the background.
(7) minRotation和maxRotation:文字旋转角度的最小值和最大值
(8) rotateRatio:字体旋转比例,如果设定为1则全部的词都会旋转
(9) shape:词云的形状,可选的有:"circle"(圆形)、"star"(五角星)、"cardioid"(苹果或心)、"diamond"(钻石)、"triangle-forward"(三角形_平躺)、"triangle"(三角形_直立)、"pentagon"(五边形)
(10) figPath:The path to a figure used as a mask.
letterCloud(data, word, wordSize = 0, letterFont = NULL, ...)
下面以包中自带的数据集demoFreqC为例介绍函数具体用法
library(wordcloud2)
wordcloud2(demoFreqC,
size = 1,
shape = 'circle',
fontFamily = '微软雅黑',
fontWeight = "nornal",
rotateRatio = 0.5,
color = "random-light",
backgroundColor = 'snow')
生成一个圆形的词云,字体为微软雅黑,文字旋转比例0.5,用light色系,桌面背景颜色为snow,效果如下:
可以继续调整参数以得到自己想要的图形,如将size设置为2,使文字云铺满整个画布
此外,生成的文字云页面支持鼠标悬浮显示动态标签,即将鼠标放在一个词如“数据”上,会显示这个词对应出现的次数。
除了生成内置形状的文字云,wordcloud2还支持自定义图片形状,下载好一张白色背景的图片,利用figPath参数调用这张图片的路径,就能绘制出该图片形状的词云,如下面推特图标的形状
wordcloud2(demoFreqC,
size = 1,
fontFamily = '微软雅黑',
fontWeight = "600",
rotateRatio = 1,
color = "random-dark",
backgroundColor = 'snow',
figPath = '/Library/Frameworks/R.framework/Versions/3.5/Resources/library/wordcloud2/examples/t.png'
)
生成词云如下:
除了内置的形状以及图片的自定义形状外,还能利用lettercloud函数生成自定义的文字形状,如画出R形状的词云,可以一下代码
letterCloud(demoFreqC, "R", wordSize = 0.3)
效果如下:
若想生成中文,需要用letterFont指出具体用的哪种中文字体,这就需要在使用之前了解自己的电脑有哪些中文字体,mac可以在字体册例查看,如果未指明字体,中文会乱码,所有的字都生成一个类似“口”的方框。
letterCloud(demoFreqC, "分析", wordSize = 0.3,letterFont = 'Hei')
效果如下:
总结:wordcloud2的功能还是非常齐全的,能生成很多形状的词云,除了包里自带的集中shape形状,还可以用图片生成任意图片形状,以及lettercloud生成任意文字形状。