登录
首页装逼神图—词云(R语言制作)
装逼神图—词云(R语言制作)
2020-07-17
收藏

 相信大家一定见过各式各样,效果酷炫的词云图,你是不是也想亲自动手制作呢?别着急,今天小编跟大家分享的正是如何用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’(五边形)

数据分析咨询请扫描二维码

上一篇
下一篇
客服在线
立即咨询