使用jiebaR、wordcloud2包制作自定义形状词云

 情人节当你发现连糖都有对象,朋友圈随便晒个照都能活活甜死你的时候,还好有R语言为撑起朋友圈的一片极乐净土。一起用微信聊天内容做词云来表达浓浓爱意吧!

使用jiebaR、wordcloud2包制作自定义形状词云

利用心形曲线比心

心形曲线浪漫吗?要想让小姐姐们眼前一亮,起到惊艳的效果,除非小姐姐也是程序员或数据分析师,哈哈。

第一步:比心

install.packages("RColorBrewer")

library(RColorBrewer)

##心形曲线

t<-seq(0,60,len=100)

x<- -.01*(-t^2+40*t+1200)*sin(pi*t/180)

y<-.01*(-t^2+40*t+1200)*cos(pi*t/180)

plot(c(-12,14),c(0,20),type='n',axes=T,xlab='',ylab='')

polygon(x,y,col="black",border=NA)

polygon(-x,y,col="black",border=NA)

为什么比的心心色号不是金圆管 shine 4#!!

因为我们黑色区域是词云的填充区域

把坐标轴去掉,格式为.png,储存到目标路径下。

使用jiebaR、wordcloud2包制作自定义形状词云

第二步导出微信聊天记录

##无奈忘记了密码,无法登录iTunes Store,所以本文以闪亮亮高大上的《山东省*工作报告-选段》为素材。

从参考某度导出微信聊天记录。

导出格式为.txt或.csv没影响。

第三步做心形词云

##所需要加载的包

(如果报错遇神杀神install packages遇佛杀佛just do it again)

library(RColorBrewer)

library(jiebaRD)

library(jiebaR)

library(wordcloud2)

分词,使用jiebaR包

wk = worker()

wk['./sdzf.txt']

#sdzf.txt为山东省*报告选段。此代码会自动生成一个分成完成的.txt文件,名为sdzf.segment.2018-02-14_13_57_48.txt,记得后面代码文件名替换成自己的文件。

为什么你的文本总是读入错误!!

R语言中,txt无法正确的读入的可能性有很多种。有的报错提示,文本中包含嵌入的null符号,所以无法正确读取;有的提示无法读取所有行。使用专业的文本编辑器VIM打开,看到比记事本看起来多了很多符号。^@:代表“NULL”符号,本身代表空白,所以在记事本下不显示。^M: 其实代表window下的回车符。以上两个符号需要被删除的,否者R可能出现读取错误。

解决办法1

将1.txt使用记事本打开,然后复制到excel里。接着将excel里的文本在复制一遍,粘贴到一个新建的txt文件 2.txt里面。然后,R就可以正常读入了。

导入分好词的文件

#读入数据分隔符是‘\n’,字符编码是‘UTF-8’,what=''表示以字符串类型读入

f <- scan('D:/rdata/sdzf.segment.2018-02-14_13_57_48.txt',sep='\n',what='',encoding="UTF-8")

#使用qseg类型分词,并把结果保存到对象seg中

seg <- qseg[f]

#去除字符长度小于2的词语

seg <- seg[nchar(seg)>1]

#统计词频

seg <- table(seg)

#显示词频

seg

#去除数字

seg <- seg[!grepl('[0-9]+',names(seg))]

#查看处理完后剩余的词数

length(seg)

#降序排序,并提取出现次数最多的前200个词语

seg <- sort(seg, decreasing = TRUE)[1:200]

#查看200个词频最高的

seg

###手动清洗掉吵架内容和异性名字,不然结果非死即伤!

使用jiebaR、wordcloud2包制作自定义形状词云

做词云

wordcloud2(seg,figPath='heartblack.png')

##heartblack.png为第一步做的图。

使用jiebaR、wordcloud2包制作自定义形状词云

#为贴合我们素材的主体,又做了一个山东版图的词云。

wordcloud2(seg,figPath ='shandong.png')

使用jiebaR、wordcloud2包制作自定义形状词云

事实证明:推进发展、坚持工作、努力挣钱才是解决单身的硬道理!

参考文献:

http://district.ce.cn/newarea/roll/201802/02/t20180202_28025606.shtml

http://blog.****.net/wzgl__wh/article/details/72036263

http://blog.sina.com.cn/s/blog_13ec1876a0102xc05.html