美文网首页js css html
可视化:Wordcloud

可视化:Wordcloud

作者: 生信云笔记 | 来源:发表于2023-01-06 13:56 被阅读0次

  词云(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很好用,但美中不足的是该包画的图没法直接保存,需要借助htmlwidgetswebshot包来实现存储为pdfpng等格式。

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还有其他可以调整的参数,例如minRotationmaxRotation,可以调整元素的角度,从而改变整体元素的排列,这里就不逐一展示了,具体大家可以参考下面帖子中的案例:

往期回顾

可视化:Dumbbell Chart
可视化:Arc Diagrams
可视化:circular dendrogram
可视化:和弦图
LACE-seq 保姆级教程

相关文章

网友评论

    本文标题:可视化:Wordcloud

    本文链接:https://www.haomeiwen.com/subject/pksscdtx.html