词云。又称文字云。“词云”就是通过形成“关键词云层”或“关键词渲染”,对网络文本中出现频率较高的“关键词”的视觉上的突出,它会过滤掉大量的文本信息,使浏览网页者只要一眼扫过文本就可以领略文本的主旨。
我们这次介绍下如何利用R中的wordcloud2包绘制词云图文档链接,这个包为之前的wordcloud包提供了一个用于数据可视化的HTML5接口。
Begin
安装包
require(devtools)
install_github("lchiffon/wordcloud2")
准备数据
> head(demoFreq)
word freq
oil oil 85
said said 73
prices prices 48
opec opec 42
mln mln 31
the the 26
简单出图
library(wordcloud2)
wordcloud2(data = demoFreq)
核心函数就是这个wordcloud2,我们看下这个函数中有哪些参数。
- data
准备像上面demoFreq数据集那样的数据框 - size
字体大小,默认为1 - fontFamily
字体种类 - fontWeight
使用的字体粗细,如普通、粗体或600 - color
文本的颜色,关键字“random-dark”和“random-light”可以使用。该参数还支持颜色向量 - backgroudColor
背景色 - minRotation
文本的最小旋转角度。 - shape(常用)
词云形状调节。可用的形状有“圆形”(默认)、“心形”(苹果或心形曲线,最著名的极坐标方程)、“菱形”、、“三角形”、“五边形”和“星形”。
..... (更多参数?wordcloud查看吧)
示例
设置背景,颜色,形状看下效果
wordcloud2(demoFreq, color = "random-light", backgroundColor = "pink",shape = 'star')
文字旋转一下
wordcloud2(demoFreq, minRotation = -pi/6, maxRotation = -pi/6, minSize = 10,
rotateRatio = 1)
自定义图片背景
-
准备一张照片,注意:必须是黑白的照片
作图如下
# 图片ma.png保存在当前的目录下
wordcloud2(demoFreq, figPath = ‘ma.png’, size = 1.5)
注意问题:
在这一步大家可能会遇到一个问题无论怎么设置出图是没有颜色的一直是原始黑白图形。google了一番链接发现原来wordcloud2包在2018年1月3号后就无法再进行自定义词云图绘制了,若要使用只能安装低版本的包去使用,OK,那也很容易,重新安装下就是了。
解决方法:
- 去Cran上下载0.2.0的包
网址:https://cran.r-project.org/src/contrib/Archive/wordcloud2/
然后我们本地安装R包即可。
- 另一种方法,使用wherepackage包查询安装,这个包可以安装Cran上任何版本的R包,这里我们先用,以后有时间写R包安装时再作讨论,想学习的可先去Github看看,Y叔公众号之前也有介绍过。
#安装
install.packages('wherepackage')
# 或者
remotes::install_github('yikeshu0611/wherepackage')
library('wherepackage')
#加载Cran上的包
d = loadData()
# 查询wordcloud2包Cran上发行的版本
where(data = d,packages = c('wordcloud2'))
package source version mtime
1 wordcloud2 Archive 0.2.0 2016-07-25
2 wordcloud2 CRAN current:0.2.1 2018-01-03
#安装
remotes::install_version('wordcloud2','0.2.0')
我们通过以上的代码发现现在电脑上装的是v0.2.1版本的,若要使用我们需要装回0.2.0版本,直接remotes::install_version('wordcloud2','0.2.0')即可。
使用字体做背景
这里主要是利用另外一个核心函数letterCloud,同样参数不再过多介绍,直接?letterCloud自己看吧
letterCloud(demoFreq, word = "R", size = 2)
letterCloud(demoFreq, word = "WORDCLOUD2", wordSize = 1)
中文词云使用
我们可以仿照上面词云文件制作个中文数据表,比如你的LOL英雄使用场次做个词云图。导入中文文件时候注意加上fileEncoding = ‘utf8’参数防止你的文件导入后乱码。
输入文件格式:
作图
data <- read.table('data.txt', row.names = 1, header = T,fileEncoding = 'utf8')
# 频率从大到小排序
data <- arrange(data,desc(freq))
wordcloud2(data, size = 1, shape='cardioid',color = 'random-dark', backgroundColor = "pink",fontFamily = "微软雅黑")
在线词云网站
对写代码不太熟悉的同学这里也有一些国内外在线词云图的网站推荐,也可以试试,使用无非都是输入频率文件生成图行,有的我也没有用过,大家自行探索吧~~~
简单看几个: