词云(Wordcloud),做为一个用于展示元素出现频率的图形,与树形图(Treemap)相比,有异曲同工之妙。词云图元素的大小代表出现的频率,其他外观如颜色和形状一般仅是为了美观,但也可以为颜色赋予实际意义。如果元素种类特别多,又想展示这些元素出现的频率时,用词云也是一个不错的选择。
绘图
绘制词云图,只需借助wordcloud2
包,即可轻松实现,下面使用该包自带的示例数据来绘制一个基础的词云:
library(wordcloud2)
head(demoFreq)
word freq
oil oil 85
said said 73
prices prices 48
opec opec 42
mln mln 31
the the 26
wordcloud2(data=demoFreq, size=1.6)
结果如下:
形状
词云的形状可以通过参数shape
随意修改,wordcloud2
也提供一些可选择的形状,默认是circle
,即圆形,还可以选择cardioid
(苹果形或心形)、star
(星形)、diamond
(钻石)、triangle-forward
(三角形)、triangle
(三角形)、pentagon
(五边形)。
wordcloud2(data=demoFreq, size=1.6, shape='star')
结果如下:
或者,我们可以自定义形状,传入一张图片,把词云填充在图中的黑色区域。下面使用该包自带的图形来绘图:
head(demoFreqC)
V2 V1
1 数据 2304
3 统计 1413
4 用户 855
5 模型 846
7 分析 773
8 数据分析 750
fig <- system.file("examples/t.png",package = "wordcloud2")
wordcloud2(demoFreqC, size = 1.6, figPath = fig)
结果如下:
颜色
可以通过参数color
给元素自定义颜色,颜色向量的长度要与数据中元素的个数一致。当然,我们在赋予颜色的时候,可以使用一些技巧,如通过一些阈值将元素分成不同的组,然后赋予每个组不同的颜色,这样就可以实现颜色分组的目的,如下面所示:
head(demoFreqC)
V2 V1
1 数据 2304
3 统计 1413
4 用户 855
5 模型 846
7 分析 773
8 数据分析 750
wordcloud2(data=demoFreqC, size=1, color = ifelse(demoFreqC[, 2] > 2000, '#f02222', '#c09292'), backgroundColor = 'black')
结果如下:
保存
虽然wordcloud2
很好用,但美中不足的是该包画的图没法直接保存,需要借助htmlwidgets
和webshot
包来实现存储为pdf
、png
等格式。
library(htmlwidgets)
library(webshot)
if(!is_phantomjs_installed()){
install_phantomjs()
}
my_graph <- wordcloud2(data=demoFreq, size=1.6)
saveWidget(my_graph, "my_graph.html", selfcontained = F)
webshot("my_graph.html", "my_graph.png", delay=5, vwidth=1000, vheight=1000)
结束语
wordcloud2
还有其他可以调整的参数,例如minRotation
、maxRotation
,可以调整元素的角度,从而改变整体元素的排列,这里就不逐一展示了,具体大家可以参考下面帖子中的案例:
往期回顾
可视化:Dumbbell Chart
可视化:Arc Diagrams
可视化:circular dendrogram
可视化:和弦图
LACE-seq 保姆级教程
网友评论