文章目录
- 词云简介
- 基础案例
- 画自定义图形词云图
- 文字云图
- jiebaR中文分词
- 将文本文件转为词云
- R语言读取文件
- 读取txt文件
- 读取CSV文件
- 读取Excel文件
词云简介
wordcloud(或标签云)是文本数据的视觉表示。标签通常是单个单词,每个标签的重要性以字体大小或颜色显示。在中R,有两个软件包可以创建wordcloud:Wordcloud
和Wordcloud2
。
Wordcloud2软件包可能是用R构建wordclouds的最佳方法。请注意,它是一个html小部件。
基础案例
wordcloud2()函数用法:
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’(五边形);
library(wordcloud2)
#1.画星星图
wordcloud2(demoFreq, size = 1,shape = 'star')
#2.中文词云
wordcloud2(demoFreqC, size = 2, fontFamily = "微软雅黑", color = "random-light", backgroundColor = "grey")
#3.旋转固定角度
wordcloud2(demoFreq, size = 2, minRotation = -pi/2, maxRotation = -pi/2)
wordcloud2(demoFreq, size = 2, minRotation = -pi/6, maxRotation = -pi/6,rotateRatio = 1)
#4.根据设定字符画词云图
letterCloud(demoFreqC,word = "R",size = 2)
letterCloud(demoFreqC,word="平",size = 2)
画自定义图形词云图
- 读取形状图片
library(wordcloud2)
dang = system.file("examples/dang.png",package = "wordcloud2")
##读取形状图片,注意图片默认放在wordclou2的sample包中,
#我的路径如下:"E:\RR\RRR\R-4.0.2\library\wordcloud2\examples\dang.png"
- 绘制词云图
wordcloud2(demoFreq, figPath = dang, size = 1,color = "black") #绘制星云图,其中demoFreg即为所用的数据,figPath = jordan为所用的自定义图片
文字云图
有些时候,我们除了需要自定义形状,可能也需要形成文字,这就需要用到wordcloud2中的新函数letterCloud
letterCloud(demoFreq, word = "撒野", wordSize = 2,color = 'random-dark',backgroundColor = "snow")
###其中demoFreqC为需要用的词语以及词频数据,word是需要可视化的文字
jiebaR中文分词
捷霸这是用于中文文本细分,关键字提取和语音标记的软件包。
library(jiebaR)
library(wordcloud2)
# worker()函数式用来初始化分词引擎的,默认为混合模型
mixseg <- worker()
text <- "中国共产党第十九次全国代表大会,是在全面建成小康社会决胜阶段、中国特色社会主义进入新时代的关键时期召开的一次十分重要的大会。"
text_seg1 <- segment(text,mixseg)
text_seg2 <- qseg[text]# 快速分词,这个已经淘汰了
text_seg1
# tag 用于打标签,标记词性(名词,动词...)
tag <- worker('tag')
text_seg3 <- segment(text,tag)
text_seg3
将文本文件转为词云
library(jiebaR)
library(wordcloud)
# worker()函数式用来初始化分词引擎的,默认为混合模型
mixseg <- worker()
#读取数据 分隔符是‘\n’,字符编码是‘UTF-8’,what=‘’表示以字符串类型读入
f <- scan("新时代中国特色社会主义.txt",sep = '\n',what='',encoding='UTF-8')
seg <- segment(f,mixseg)
seg
seg <- seg[nchar(seg)>1]# 去除字符长度小于2的词语
seg <- table(seg)#统计词频
seg <- seg[!grep('[0-9]+',names(seg))]#去除数字
seg <- sort(seg,decreasing = TRUE)[2:100] # 降序排序,并提取出现次数最多的前100个词语
seg ##查看100个词频最高的
bmp("dang.png", width = 500, height = 500)
par(bg = "black")
wordcloud(names(seg), seg, colors = rainbow(100), random.order=F)
dev.off()# 在dang.png图片存储的位置查看结果
R语言读取文件
- 准备工作
为方便后面使用的相对路径,我们先使用setwd(路径)
设置路径,设置好之后可以用getwd()
获取当前路径进行检查。
> setwd("F:/r-test-data")
> getwd()
[1] "F:/r-test-data"
注意数据分隔符:
因为数据有时候是从数据库导出或者.xlsx里截取等等,所以有时候看起来是空白分隔却有着不一样的格式。
常见空白分隔符有:空格,制表符,换行符
sep=” ”;sep = “\t”;sep = “\n”
读取txt文件
参考官方
read.table(file, header = FALSE, sep = "", quote = "\"'",
dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"),
row.names, col.names, as.is = !stringsAsFactors,
na.strings = "NA", colClasses = NA, nrows = -1,
skip = 0, check.names = TRUE, fill = !blank.lines.skip,
strip.white = FALSE, blank.lines.skip = TRUE,
comment.char = "#",
allowEscapes = FALSE, flush = FALSE,
stringsAsFactors = default.stringsAsFactors(),
fileEncoding = "", encoding = "unknown", text, skipNul = FALSE)
将工作路径调制要导入文件所在的文件夹下,之后输入.txt的文件名和分隔符就可以导入数据了。12.txt
文件是在'F:/r-test-data'
这个目录下的
> data1=read.table("12.txt",sep = '\t',header = TRUE,fileEncoding = 'utf8')
> data1
临时禁用
1 /etc/init.d/NetworkManager stop (centos6)
2 service NetworkManager stop (centos6)
3 systemctl stop NetworkManager (centos7)
4 永久
5 chkconfig NetworkManager off (centos6)
6 systemctl disable NetworkManager (centos7)
7 重启服务
8 /etc/init.d/network restart (centos6)
9 service network restart (centos6)
10 systemctl restart network (centos7)
读取CSV文件
CSV (逗号分隔值文件格式)
CSV”并不是一种单一的、定义明确的格式(尽管RFC 4180有一个被通常使用的定义)。因此在实践中,术语“CSV”泛指具有以下特征的任何文件:
- 纯文本,使用某个字符集,比如ASCII、Unicode、EBCDIC或GB2312;
- 由记录组成(典型的是每行一条记录);
- 每条记录被分隔符分隔为字段(典型分隔符有逗号、分号或制表符;有时分隔符可以包括可选的空格);
- 每条记录都有同样的字段序列。
是R语言使用过程中最为常用的数据格式,有专门的读取函数read.csv(file,header)(read.csv也可用于读取逗号分隔的.txt文件)。
读取Excel文件通常,先转为CSV格式,然后再使用。
> data2 <- read.csv('student.csv')
> data2
Hours Scores
1 2.5 21
2 5.1 47
3 3.2 27
4 8.5 75
5 3.5 30
6 1.5 20
...
读取Excel文件
首先安装xlsx包
install.packages("xlsx")
install.packages("rJava")
加载上面的两个包
然后执行
> data4 <- read.xlsx('566.xlsx',sheetIndex = 1,encoding = "UTF-8")
> data4
总结一下,用R语言的xlsx包里面的read.xlsx( )导入含有中文的excel文件时,会因为以下问题出现乱码:
1.没有插入encoding的正确参数(一般为UTF-8)
2.文件的编码方式应该与encoding一致(因为Excel一般默认GB2312)
3.excel文件含有中文名
4.excel文件中含有表格格式