R语言利用wordcloud2绘制词云

    xiaoxiao2021-03-26  22

    本次的重点绘制词云,所以并不太重视其他分析方面的论述。

    本机环境:

    window 10

    R x64 3.3.0

    R包:

    tmcn:词频统计

    wordcloud2:绘制词云

    Rwordseg:分词

    由于tmcn和Rwordseg包在R3.3.0的版本中没有可以直接在线下载安装,所以需要去搜索并且本地安装

    附Rwordseg和tmcn的下载链接,注意安装Rwordseg前需要配置java环境,这里就不具体阐述了,百度即可。

    https://r-forge.r-project.org/R/?group_id=1054

    https://r-forge.r-project.org/R/?group_id=1571

    数据文件:

    本次采用自主爬虫的数据文件csv(豆瓣电影:我不是潘金莲)的评论语料

    数据样式截图如下:

    关于此爬虫的代码与文件,需要可以下载,如失效,也可留言

    链接:http://pan.baidu.com/s/1kVe9cMj 密码:84ft

    前期导入清理、分词、词频统计

    library(Rwordseg) library(tmcn) library(wordcloud2) data <- read.csv("d.csv",encoding="utf-8") data <- unique(data)# 去除重复的数据

    #去除评论中含有的英文和数字

    text <- gsub('[a-zA-Z0-9]','',data$comment)

    #插入自定义词汇

    words <- c('范冰冰')

    insertWords(strwords=words)

    #分词

    segword <- segmentCN(strwords=text)

    #创建停止词库,并转为向量格式

    mystopwords <- read.table("stop_words.txt",stringsAsFactors=FALSE)

    mystopwords <- as.vector(mystopwords[,1])

    #自定义删除停止词函数

    removewords <- function(target_words,stop_words)

    {

    target_words <- target_words[target_words%in%stop_words==FALSE]

    return(target_words)

    }

    segword2 <- sapply(X=segword,FUN=removewords,mystopwords)

    开始绘制词云

    首先介绍下wordcloud2这个函数

    wordcloud2(data, size = 1minSize = 0gridSize =  0,  

        fontFamily = NULLfontWeight = '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’(五边形);

    #绘制文字云

    word_freq <- getWordFreq(string=unlist(segword2))

    一切使用默认参数

    wordcloud2(word_freq)

    提取前1000个,并改变形状

    wordcloud2(word_freq[0:1000,],size=1,shape='star',fontFamily="微软雅黑")

    #绘制出出现频率最高的前50个词

    wordcloud2(word_freq[0:1000,],size=1,shape='star',fontFamily="微软雅黑")

    #自定义图片,只要是黑白图片即可,文字默认会画在黑色部分上

    wordcloud2(word_freq,figPath='horse.png',size=0.5,shape='star',fontFamily="微软雅黑")

    其实到这里很多参数你都可以随意尝试,怎么好看怎么调。 欢迎大家对此多多提提意见,我也不知道该写什么好了,谢谢!

    转载请注明原文地址: https://ju.6miu.com/read-660449.html

    最新回复(0)