专栏首页生信补给站绘图系列|R-wordcloud2包绘制词云

绘图系列|R-wordcloud2包绘制词云

前段时间读完大刘的流浪地球,本来想着写点东西... 结果“懒癌”了,今天就先弄个词云凑合吧( ╯□╰ )。

词云首先需要将下载好的“流浪地球”的文本文件读入R,然后使用jieba包对文本进行分词,然后绘制词云。

一 数据准备

载入所需的R包,准备好流浪地球的txt格式的文本文件。

library(jiebaRD) 
library(jiebaR) 
library(wordcloud2)

二 分词,统计词频

使用jieba包对文本进行分词。

engine = worker() 
segment("流浪地球.txt",engine)
data <- scan('流浪地球.segment.2019-04-09_22_36_54.txt',sep='\n',what='',encoding="UTF-8") 
data2 <- freq(data)
data2 <- qseg[data]
data.words <- data2
head(data.words)

三 去掉停词

过滤掉类似“的”,“你”,“我们”等类似的无意义的停词,并可根据自己需要设置词频的个数。

#过滤掉1个字的词
data.words <- subset(data.words, nchar(as.character(data.words))>1) 
#过滤停词
stop=read.table(file=file.choose(),colClasses="character") 
stopwords=c(NULL) 
for(i in 1:dim(stop)[1]){ 
stopwords=c(stopwords,stop[i,1]) 
}
for(j in 1:length(stopwords)){ 
data.words <- subset(data.words,data.words!=stopwords[j]) 
}

四 统计词频

4.1 统计词频

data.freq <- table(unlist(data.words)) 
data.freq <- rev(sort(data.freq)) 
data.freq <- data.frame(word=names(data.freq), freq=data.freq)

4.2 根据需要过滤频次

#按词频过滤词,过滤掉只出现过一次的词,这里可以根据需要调整过滤的词频数
data.freq=subset(data.freq, data.freq$freq.Freq>=2) 
head(data.freq)
   word freq.Var1 freq.Freq
1   地球      地球       164
2   太阳      太阳        95
3 发动机    发动机        60
4   人类      人类        35
5   地面      地面        30
6   木星      木星        28

五 绘制词云

5.1 图形设定为“star”

wordcloud2(data.freq[,2:3],color = "random-light", backgroundColor = "grey",shape = 'star')

5.2 汉字图形展示

letterCloud(data.freq[,2:3],word="地球",size = 2)

5.3 指定图形

指定的背景图需要在R包的example文件夹中,本例为微信的开机图,然而不像,,,鬼知道咋回事啊。

world = system.file("examples/download1.jpg",package = "wordcloud2")
wordcloud2(data.freq[,2:3], figPath = world, size = 1,color = "black")

OK,词云绘制完毕。

你确定你不想看看你喜欢的书,杂志,都主要是说的些什么?

你确定你不想看看唐诗三百首,都主要是用的哪些词?

你确定你不想看看四六级,考研英语,都主要有哪些高频词汇,不是省了买本书?

你确定你不想看看各种影评,弹幕都是吐槽或者感概的啥?

本文分享自微信公众号 - 生信补给站(Bioinfo_R_Python),作者:MJ

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R编程-实例

    barplot(data,col = cols,las=2,xlim=c(0,10),sub="Number of cock_SNPs(M)",horiz =T...

    西游东行
  • Perl_基本数据类型(1)

    $act = 1.5e+10; # 浮点数

    西游东行
  • 工欲善“python”事,必先利其器-Anaconda & Jupyter

    Python是一种跨平台的计算机程序设计语言。是一种面向对象的动态类型语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的...

    西游东行
  • 如何在小程序中获取用户信息

    在以前的文章中,我们介绍了小程序的登录鉴权功能,方便开发者去获取用户的appid和session_key以便确认用户的身份。但是,仅仅通过appid和sessi...

    it大叔
  • TensorFlow从1到2 | 第一章 消失的梯度

    上一主题 《TensorFlow从0到1》介绍了人工神经网络的基本概念与其TensorFlow实现,主要基于浅层网络架构,即只包含一个隐藏层的全连接(FC,Fu...

    用户1332428
  • matlab | 离散傅里叶变换一阶、二阶

    把时域转换到频域,能够为图像处理带来很多便捷的操作。在频谱图中直接去掉低频部分或者高频部分都会发生很多有趣的事情。

    Rare0716
  • ggplot2画世界地图小实例

    image.png 另外一种形式,以下代码来自网络,原文地址 https://stackoverflow.com/questions/54964279/how-...

    用户7010445
  • 生信(五)awk求取某一列的平均值

    awk是生信人必须要掌握的命令行工具。为什么?因为它太强大了。我们举一个例子来说明。

    一只羊
  • 一杯茶的时间,上手 Gatsby 搭建个人博客

    我的博客最初是用 Github Pages 默认的 Jekyll[2] 框架,其使用的 Liquid[3] 模板引擎在使用上有诸多不便。

    一只图雀
  • ADO.NET Entity Framework

    作为下一代 ADO.NET 3.0 的开发框架,Entity Framework 让我们从复杂的关系数据模型中解脱出来,使用更加符合面向对象的实体数据模型(En...

    张善友

扫码关注云+社区

领取腾讯云代金券