数据可视化|如何用wordcloud绘制词云图?
时间:2022-07-22
本文章向大家介绍数据可视化|如何用wordcloud绘制词云图?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
词云图中的每个字的大小与出现的频率或次数成正比,词云图的统计意义不是特别大,主要是为了美观,用于博客和网站比较常见。
导入数据
library(tm)
library(wordcloud)
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,第二列是文章内容
TEXT_ds<-DataframeSource(TEXT_title)
构建语料库
Corpus<-VCorpus(TEXT_ds)
针对语料库文本转换
思路:删除语料库中的标点符号,字母转换为小写,删除数字,删除空白字符,过滤掉停止词库之后转换为纯文本。
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)#转换为纯文本
针对语料库断字处理,生成词频权重矩阵
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。
#计算频率
Term_matrix<-as.matrix(Term_matrix)
#对词频权重矩阵的表头进行命名
colnames(Term_matrix)<-c("Text1","Text2")
#把矩阵转为便于后续统计分析的数据框
Data<-data.frame(Term_matrix)
#导出两篇文章的频率分析结果,文件名为Term_matrix
write.csv(Data,'Term_matrix.csv')
读取文件
read.csv('Term_matrix.csv',header=TRUE,row.names=1)
#分开绘制两篇文章的词云
wordcloud(row.names(Data),Data$Text1,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.3)
wordcloud(row.names(Data),Data$Text2,min.freq=9.5,col=brewer.pal(8,"Dark2"),rot.per=0.2)
#两篇文章对比
comparison.cloud(Data,max.words=250,random.order=FALSE,colors=c("#00B2FF","#084081"))
#通过设置max.word的大小决定显示图中文本的多少。
两篇文章共有词部分
commonality.cloud(Data,max.words=120,random.order=FALSE,colors="#66A61E")
绘制星形图
将Data数据计算频率Freq=n/sum(n),根据频率绘制星形图。
wordcloud2(Data1,size=0.4,shape='star')
- Golang语言社区--【基础知识】循环
- Spring Cloud构建微服务架构:消息驱动的微服务(消费组)【Dalston版】
- Spring Cloud构建微服务架构:消息驱动的微服务(消费分区)【Dalston版】
- Spring Boot中使用LDAP来统一管理用户信息
- 使用Swagger2Markup实现API文档的静态部署(一):AsciiDoc
- 使用Swagger2Markup实现API文档的静态部署(二):Markdown和Confluence
- Dubbo官方的Starter发布1.0.0测试版,与Spring Boot的结合将更加自然
- spring-boot-starter-swagger 1.2.0.RELEASE:新增分组配置功能
- 领域驱动设计
- Spring Boot中使用JavaMailSender发送邮件
- Spring Boot的应用限流
- Spring Cloud构建微服务架构:服务网关(过滤器)【Dalston版】
- 虚拟机类加载机制
- 深入理解JVM垃圾收集机制(JDK1.8)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- md5(unix)原理分析
- XDCTF2015代码审计全解
- 使用腾讯云TCB云函数抓取微信情报信息
- 数据库PostrageSQL-服务器配置预写式日志
- 分享一个jsonp劫持造成的新浪某社区CSRF蠕虫
- 数据库PostrageSQL-服务器配置资源消耗
- 数据库PostrageSQL-服务器配置连接和认证
- 浏览器安全一 / Chrome XSS Auditor bypass
- 数据库PostrageSQL-服务器配置文件位置
- 数据库PostrageSQL-服务器配置设置参数
- 一个基于ngrx的计数器例子
- SAP Spartacus checkout Shipping address的页面实现
- 使用Let's Encrypt保护你的数据包
- php7 + nginx + mysql 安装小计
- 掌阅iReader某站Python漏洞挖掘