前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数据可视化|如何用wordcloud绘制词云图?

数据可视化|如何用wordcloud绘制词云图?

作者头像
黑妹的小屋
发布2020-08-05 11:32:15
1.3K0
发布2020-08-05 11:32:15
举报

词云图中的每个字的大小与出现的频率或次数成正比,词云图的统计意义不是特别大,主要是为了美观,用于博客和网站比较常见。

导入数据

library(tm)

library(wordcloud)

代码语言:javascript
复制
Text1<-paste(scan("Text1.txt",what=character(0),sep=""),collapse="")
Text2<-paste(scan("Text2.txt",what=character(0),sep=""),collapse="")
TEXT<-data.frame(c(Text1,Text2),row.names=c("Text1","Text2"))
TEXT_title<-data.frame(doc_id=row.names(TEXT),text=TEXT$c.Text1..Text2.

)#这里的doc_id不可替换成别的词

创建数据框格式的文本

#创建数据框格式的文本,第一列是doc_id,第二列是文章内容

代码语言:javascript
复制
TEXT_ds<-DataframeSource(TEXT_title)

构建语料库

代码语言:javascript
复制
Corpus<-VCorpus(TEXT_ds)

针对语料库文本转换

思路:删除语料库中的标点符号,字母转换为小写,删除数字,删除空白字符,过滤掉停止词库之后转换为纯文本。

代码语言:javascript
复制
Corpus<-tm_map(Corpus,removePunctuation)#删除标点符号
Corpus<-tm_map(Corpus,tolower)#转换为小写
Corpus<-tm_map(Corpus,removeNumbers)#删除数字
Corpus <- tm_map(Corpus,stripWhitespace)#删除空白字符
Corpus <- tm_map(Corpus,function(x){removeWords(x,stopwords())})
Corpus <- tm_map(Corpus,PlainTextDocument)#转换为纯文本

针对语料库断字处理,生成词频权重矩阵

代码语言:javascript
复制
Term_matrix<-TermDocumentMatrix(Corpus)
> Term_matrix
<<TermDocumentMatrix (terms: 2462, documents: 2)>>
Non-/sparse entries: 3215/1709
Sparsity           : 35%
Maximal term length: 16
Weighting          : term frequency (tf)

查看Term_matrix得知2篇文章共2456个字,稀疏度为35%,最大词长度是16。

#计算频率

代码语言:javascript
复制
Term_matrix<-as.matrix(Term_matrix)

#对词频权重矩阵的表头进行命名

代码语言:javascript
复制
colnames(Term_matrix)<-c("Text1","Text2")

#把矩阵转为便于后续统计分析的数据框

代码语言:javascript
复制
Data<-data.frame(Term_matrix)

#导出两篇文章的频率分析结果,文件名为Term_matrix

代码语言:javascript
复制
write.csv(Data,'Term_matrix.csv')

读取文件

代码语言:javascript
复制
read.csv('Term_matrix.csv',header=TRUE,row.names=1)

#分开绘制两篇文章的词云

代码语言:javascript
复制
wordcloud(row.names(Data),Data$Text1,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.3)
代码语言:javascript
复制
wordcloud(row.names(Data),Data$Text2,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.2)

#两篇文章对比

代码语言:javascript
复制
comparison.cloud(Data,max.words=250,random.order=FALSE,colors=c("#00B2FF","#084081"))

#通过设置max.word的大小决定显示图中文本的多少。

两篇文章共有词部分

代码语言:javascript
复制
commonality.cloud(Data,max.words=120,random.order=FALSE,colors="#66A61E")

绘制星形图

将Data数据计算频率Freq=n/sum(n),根据频率绘制星形图。

代码语言:javascript
复制
wordcloud2(Data1,size=0.4,shape='star')
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-07-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 菜鸟学数据分析之R语言 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
腾讯云图数据可视化
腾讯云图数据可视化(Tencent Cloud Visualization) 是一站式数据可视化展示平台,旨在帮助用户快速通过可视化图表展示大量数据,低门槛快速打造出专业大屏数据展示。精心预设多种行业模板,极致展示数据魅力。采用拖拽式自由布局,全图形化编辑,快速可视化制作。腾讯云图数据可视化支持多种数据来源配置,支持数据实时同步更新,同时基于 Web 页面渲染,可灵活投屏多种屏幕终端。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档