相信大家一定见过各式各样,效果酷炫的词云图,你是不是也想亲自动手制作呢?别着急,今天小编跟大家分享的正是如何用R语言制作词云图,废话不多说,一起来看吧。
以下文章来源于:AI入门学习
作者:伍正祥
所谓词云,即词频到 词大小的映射,也就是说,在某段文本语料中,某个词出现的次数越多,在画词云时个头越大。
词云的用处很多,比如可以把自己的简历分词,按头像画词云、不同文章关键词对比、不同人物画像对比等,简单明了,还显得特别有逼格。
因此,大部分的词云工具,要求输入词以及对应的词频即可,部分网站可以直接输入文章,自动分词提取词频。本文主要介绍利用R语言进行词频分析,并绘制词云图,如果不想使用R语言,可以看上一篇文章《装逼神图—词云(在线制作)》,直接在线绘图。
一、词云相关R包的安装
1、词云相关的包
install.packages('wordcloud2')
install.packages('jsonlite')
如果安装的有问题,按下面的方法安装
install.packages('devtools')
devtools::install_github("lchiffon/wordcloud2")
安装好后,进行加载
library(wordcloud2)
2、分词要用的包
分词用的是结巴分词,安装与加载
install.packages('jiebaR')
library(jiebaR)
二、对预料进行分词
#构建分词器
mixseg = worker()
#添加自定义词典
#user_myself = read.csv("user_myself.csv",header=T)
#user_myself = as.vector(user_myself[[1]])
#new_user_word(mixseg,user_myself)
#添加停用词词典,添加了'而','的','我'等词
mixseg = worker(stop_word = "stopword.txt")
#分词开始,下面是朱自清的《匆匆》,不进行停用词处理和自定义词典
texts = '燕子去了,有再来的时候;杨柳枯了,有再青的时候;桃花谢了,有再开的时 候。但是,聪明的,你告诉我,我们的日子为什么一去不复返呢?——是有人偷了他 们罢:那是谁?又藏在何处呢?是他们自己逃走了罢——如今又到了哪里呢?我不知道他们给了我多少日子,但我的手确乎是渐渐空虚了。在默默里算着,八千多日子已经从我手中溜去,像针尖上一滴水滴在大海里,我的日子滴在时间的流里,没有声音,也没有影子。我不禁头涔涔而泪潸潸了。去的尽管去了,来的尽管来着;去来的中间,又怎样地匆匆呢?早上我起来的时候,小屋里射进两三方斜斜的太阳。太阳他有脚啊,轻轻悄悄地挪移了;我也茫茫然跟着旋转。于是——洗手的时候,日子从水盆里过去;吃饭的时候,日子从饭碗里过去;默默时,便从凝然的双眼前过去。我觉察他去的匆匆了,伸出手遮挽时,他又从遮挽着的手边过去,天黑时,我躺在床上,他便伶伶俐俐地从我身上跨过,从我脚边飞去了。等我睁开眼和太阳再见,这算又溜走了一日。我掩着面叹息。但是新来的日子的影儿又开始在叹息里闪过了。在逃去如飞的日子里,在千门万户的世界里的我能做些什么呢?只有徘徊罢了,只有匆匆罢了;在八千多日的匆匆里,除徘徊外,又剩些什么呢?过去的日子如轻烟,被微风吹散了,如薄雾,被初阳蒸融了;我留着些什么痕迹呢?我何曾留着像游丝样的痕迹呢?我赤裸裸来到这世界,转眼间也将赤裸裸的回去罢?但不能平的,为什么偏要白白走这一遭啊?你聪明的,告诉我,我们的日子为什么一去不复返呢?'
#分词
segment = segment(texts,mixseg)
#词频统计
segment = freq(segment)
#按词频降序排列
library(dplyr) #没有安装个
segment = arrange(segment,-freq)
#词云绘制
wordcloud2 (segment, size = 1,shape = 'circle')
letterCloud(segment,"C")
三、绘图包及基本函数介绍
wordcloud2包主要有两个函数:
wordcloud2 --- 绘制各种图形词云
letterCloud -----绘制各种 ‘字符’云
#用包中的数据集直接绘图
wordcloud2(demoFreq)
letterCloud(demoFreq,"R", size = 2)
#可以通过调整各种参数和形状
wordcloud2(demoFreq, size = 2)
wordcloud2(demoFreq, size = 1,shape = 'pentagon')
wordcloud2(demoFreq, size = 1,shape = 'star')
letterCloud(demoFreq,"LOVE", size = 2)
#上传图片进行绘图
wordcloud2(demoFreq, figPath = 'yun.jpg')
#常用函数详细参数及常用参数介绍
wordcloud2(data, size = 1, minSize = 0, gridSize = 0, fontFamily = NULL,fontWeight = 'normal', color = 'random-dark', backgroundColor = "white", minRotation = -pi/4, maxRotation = pi/4, rotateRatio = 0.4, shape = 'circle', ellipticity = 0.65, widgetsize = NULL)
常用参数:(1)data:词云生成数据,包含具体词语以及频率;(2)size:字体大小,默认为1,一般来说该值越小,生成的形状轮廓越明显;(3)fontFamily:字体,如‘微软雅黑’;(4)fontWeight:字体粗细,包含‘normal’,‘bold’以及‘600’;;(5)color:字体颜色,可以选择‘random-dark’以及‘random-light’,其实就是颜色色系;(6)backgroundColor:背景颜色,支持R语言中的常用颜色,如‘gray’,‘blcak’,但是还支持不了更加具体的颜色选择,如‘gray20’;(7)minRontatin与maxRontatin:字体旋转角度范围的最小值以及最大值,选定后,字体会在该范围内随机旋转;(8)rotationRation:字体旋转比例,如设定为1,则全部词语都会发生旋转;(9)shape:词云形状选择,默认是‘circle’,即圆形。还可以选择‘cardioid’(苹果形或心形),‘ star ’(星形),‘diamond’(钻石),‘triangle-forward’(三角形),‘triangle’(三角形),‘pentagon’(五边形)
数据分析咨询请扫描二维码