Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >🤠 Wordcloud | 风中有朵雨做的'词云'哦!~

🤠 Wordcloud | 风中有朵雨做的'词云'哦!~

作者头像
生信漫卷
发布于 2023-09-04 07:19:34
发布于 2023-09-04 07:19:34
18810
代码可运行
举报
运行总次数:0
代码可运行

1写在前面

今天可算把key搞好了,不得不说🏥里手握生杀大权的人,都在自己的能力范围内尽可能的难为你。😂

我等小大夫也是很无奈,毕竟奔波霸霸波奔是要去抓唐僧的。🤐

好吧,今天是词云Wordcloud)教程,大家都说简单,但实际操作起来又有一些难度,一起试试吧。😋

2用到的包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
rm(list = ls())
library(tidyverse)
library(tm)
library(wordcloud)

3示例数据

这里我准备好了2个文件用于绘图,首先是第一个文件,每行含有n个词汇。🤣

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset <- read.delim("./wordcloud/dataset.txt", header=FALSE)

DT::datatable(dataset)

接着是第2个文件,代表dataset文件中每一行的label。🥸

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset_labels <- read.delim("./wordcloud/labels.txt",header=FALSE)
dataset_labels <- dataset_labels[,1]
dataset_labels_p <- paste("class",dataset_labels,sep="_")
unique_labels <- unique(dataset_labels_p)

unique_labels

4数据初步整理

然后我们利用sapply函数把数据整理成list。😘

可能会有小伙伴问sapplylapply有什么区别呢!?😂

oksapply()函数与lapply()函数类似,但返回的是一个简化的对象,例如向量或矩阵。😜

如果应用函数的结果具有相同的长度和类型,则sapply()函数将返回一个向量。

如果结果具有不同的长度或类型,则sapply()函数将返回一个矩阵。😂

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset_s <- sapply(unique_labels,function(label) list( dataset[dataset_labels_p %in% label,1] ) )

str(dataset_s)

5数据整理成Corpus

接着我们把上面整理好的list中每个元素都整理成一个单独的Corpus。🤩

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset_corpus <- lapply(dataset_s, function(x) Corpus(VectorSource( toString(x) )))

然后再把Cporus合并成一个。🧐

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset_corpus_all <- dataset_corpus

6去除部分词汇

修饰一下, 去除标点、数字、无用的词汇等等。😋

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
dataset_corpus_all <- lapply(dataset_corpus_all, tm_map, removePunctuation)
dataset_corpus_all <- lapply(dataset_corpus_all, tm_map, removeNumbers)
dataset_corpus_all <- lapply(dataset_corpus_all, tm_map, function(x) removeWords(x,stopwords("english")))
 
words_to_remove <- c("said","from","what","told","over","more","other","have",
                     "last","with","this","that","such","when","been","says",
                     "will","also","where","why","would","today")

dataset_corpus_all <- lapply(dataset_corpus_all, tm_map, function(x)removeWords(x, words_to_remove))

7计算term matrix并去除部分词汇

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
document_tm <- TermDocumentMatrix(dataset_corpus_all)
document_tm_mat <- as.matrix(document_tm)
colnames(document_tm_mat) <- unique_labels
document_tm_clean <- removeSparseTerms(document_tm, 0.8)
document_tm_clean_mat <- as.matrix(document_tm_clean)
colnames(document_tm_clean_mat) <- unique_labels
 
# 去除长度小于4的term
index <- as.logical(sapply(rownames(document_tm_clean_mat), function(x) (nchar(x)>3) ))
document_tm_clean_mat_s <- document_tm_clean_mat[index,]
 
head(document_tm_clean_mat_s)

8可视化

8.1 展示前500个词汇

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
comparison.cloud(document_tm_clean_mat_s, 
                 max.words=500, 
                 random.order=F,
                 use.r.layout = F,
                 scale = c(10,0.4), 
                 title.size=1.4,
                 title.bg.colors = "white"
                 )

8.2 展示前2000个词汇

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
comparison.cloud(document_tm_clean_mat_s,
                 max.words=2000,
                 random.order=F,
                 use.r.layout = T,
                 scale = c(6,0.4), 
                 title.size=1.4,
                 title.bg.colors = "white"
                 )

8.3 展示前2000个common词汇

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
commonality.cloud(document_tm_clean_mat_s, 
                  max.words=2000,
                  random.order=F)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 生信漫卷 微信公众号,前往查看

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

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

评论
登录后参与评论
1 条评论
热度
最新
WritableMap params = Arguments.createMap();这行就直接闪退了...... /system_process E/InputDispatcher: channel '4e8cbea0 com.bluestacks.appmart/com.bluestacks.appmart.MarketPageGrid (server)' ~ Channel is unrecoverably broken and will be disposed!
WritableMap params = Arguments.createMap();这行就直接闪退了...... /system_process E/InputDispatcher: channel '4e8cbea0 com.bluestacks.appmart/com.bluestacks.appmart.MarketPageGrid (server)' ~ Channel is unrecoverably broken and will be disposed!
回复回复点赞举报
推荐阅读
编辑精选文章
换一批
React Native与Android 原生通信
我们用React Native 做混合开发的时候免不了要原生和React Native 进行通信交互,这篇文章就是分享原生模块与JS传递数据的几种方式。
HelloJack
2018/08/28
2.6K0
React Native JSBundle拆包之原理篇
RN作为一款非常优秀的移动端跨平台开发框架,在近几年得到众多开发者的认可。纵观现在接入RN的大厂,如qq音乐、菜鸟、去哪儿,无疑不是将RN作为重点技术栈进行研发。
xiangzhihong
2022/11/30
3.4K0
Android与RN层的交互
Android跳转到RN页面 由于主客是以插件化的方式集成功能插件的,所以在主客中Android跳转到RN页面需要plugin、module和component。plugin、module不过多解释,component对应的是具体的js页面,要成功启动此页面,需要在对应的RN二方库中注册此页面。例如:
xiangzhihong
2022/11/30
6130
⏱ React Native 启动速度优化——Native 篇(内含源码分析)
Web 开发有一个经典问题:「浏览器中从输入 URL 到页面渲染的这个过程中都发生了什么?」
卤代烃
2021/04/26
2K0
⏱ React Native 启动速度优化——Native 篇(内含源码分析)
现有Android项目引入ReactNative--九步大法
为什么写这篇文章,因为很多时候我们是需要在原Android工程中添加ReactNative,而不是直接react-native init hello来创建工程,而且官网的说明不是很详细,不是完全针对安卓的,所以本文的必要性不言而喻。
先知先觉
2019/01/21
1.3K0
React Native Android原生模块开发实战|教程|心得
尊重版权,未经授权不得转载 本文出自:贾鹏辉的技术博客(http://www.devio.org) 告诉大家一个好消息,为大家精心准备的React Native视频教程发布了,大家现可以看视频学React Native了。 前言 一直想写一下我在React Native原生模块封装方面的一些经验和心得,来分享给大家,但实在抽不开身,今天看了一下日历发现马上就春节了,所以就赶在春节之前将这篇博文写好并发布(其实是两篇:要看iOS篇的点这里《React Native iOS原生模块开发》)。 我平
CrazyCodeBoy
2018/05/07
2.2K0
React Native Android原生模块开发实战|教程|心得
RN集成到Android原生项目实践
1.新建普通Android项目 新建一个普通的Android项目即可,打开Android Studio -> File -> New -> New Project… 按步骤执行即可。
用户1269200
2018/12/06
2.9K0
使用Leancloud实现React Native App的消息推送(Push Notification)- Android篇
在上一篇文章 中我们详细讲解了用Leancloud实现iOS消息推送的流程,今天本文将继续讲解实现Android的消息推送。
MudOnTire
2019/05/26
3.4K0
React Native调用原生组件
在React Native开发过程中,有时候我们可能需要访问平台的API,但react Native还没有相应的实现,或者是React Native还不支持一些原生的属性,我们需要调用原生代码来实现,或者是我们需要复用一些原来的Java代码,这个时候我们就需要创建一个原生模块来自己实现对我们需要功能的封装。 相关文档可以参照官方的介绍。 #实例 下面我们就通过实现一个自定义模块,来熟悉编写原生模块需要用的一些知识。该模块主要实现调用一些Android原生的功能,比如弹Toast,启动Activity等。
xiangzhihong
2018/01/26
1.8K0
React Native调用Android相机图库
概述 在很多的React Native开发中,我们需要调用原生的api实现调用相机和图库的功能,网上用的最多的开源库如:react-native-image-picker。关于react-native-image-picker的用法大家请看相关的文档。我们今天手动实现一份。 调用Android图库相机 创建项目 执行命令 : react-native init HeadImage 创建一个名为HeadImage的工程,可以使用命令先运行下Demo项目。 然后照一张图片,放到放到工程的 HeadImage\A
xiangzhihong
2018/01/26
1.8K0
react-native 打开设置界面
iOS iOS打开设置还是比较简单的,使用Linking组件即可: Linking.openURL('app-settings:') .catch(err => console.log('error', err)) Android 1、在android/app/src/main/java/com/<projectname>/文件夹下创建opensettings文件夹 2、在这个文件夹下创建模块文件OpenSettingsModule.java(模块功能)和包文件OpenSettingsPackage.
mcq
2018/06/27
2K0
React Native 混合开发(Android篇)
在React Native的应用场景中,有时候一个APP只有部分页面是由React Native实现的,比如:我们常用的携程App,它的首页下的很多模块都是由React Native实现的,这种开发模式被称为混合开发。
CrazyCodeBoy
2018/09/26
4.4K0
React Native调用原生UI组件
在React Native 中,其已经将几个常用的原生组件进行了封装,但是并不是所有系统的原始组件都被封装了,因此有时候我们不得不自己动手封装一下,从而能够使用那些React Native没有为我们封装的原生组件。为了方便讲解,我们选择第一个第三方库kenburnsview来讲解,kenburnsview是一个可以让图片在在页面移动或者放大缩小的库。 Android原生组件封装 1,继承SimpleViewManager,返回UI组件实例 首先,需要继承 SimpleViewManager 这个泛型类,
xiangzhihong
2018/02/06
1.7K0
React Native移植原生Android
(一)前言 之前已经写过了有关React Native移植原生Android项目的文章,不过因为RN版本更新的原因吧,跟着以前的文章可能会出现一些问题,对于初学者来讲还是会有很多疑难的困惑的,而且官方的文档移植没有更新,最新版本集成方法已经发生很大变化啦~OK,今天我们用新版本进行走一遍流程,具体原来就不讲了,直接看移植步骤。 (二)前提准备工作 ①.首先我们有一个采用Gradle构建的Android应用项目,这个大家直接采用Android Studio进行创建一个项目即可。我这边新建一个目录TestInt
xiangzhihong
2018/02/05
1.8K0
React Native移植原生Android
ReactNative调用Android原生模块
有时候App需要访问平台API,但React Native可能还没有相应的模块包装;或者你需要复用一些Java代码,而不是用Javascript重新实现一遍;又或者你需要实现某些高性能的、多线程的代码,譬如图片处理、数据库、或者各种高级扩展等等。 我们把React Native设计为可以在其基础上编写真正的原生代码,并且可以访问平台所有的能力。要想实现访问Android原生API,总结一下,主要有以下几个步骤: 1. 创建一个原生模块 这个原生模块是一个继承ReactContextBaseJavaMod
xiangzhihong
2018/02/06
1.5K0
react-native学习之入门app
1、项目初始化: react-native init MyProject 2、启动项目: cd MyProject react-native start 新开cmd窗口: react-native r
用户1141560
2017/12/26
1.2K0
ReactNative For Android 框架启动核心路径剖析
QQ空间开发团队
2016/10/13
5.7K0
ReactNative For Android 框架启动核心路径剖析
React Native运行原理解析
Facebook 于2015年9月15日推出react native for Android 版本, 加上2014年底已经开源的IOS版本,至此RN (react-native)真正成为跨平台的客户端框架。本篇主要是从分析代码入手,探讨一下RN在安卓平台上是如何构建一套JS的运行框架。 一、 整体架构 RN 这套框架让 JS开发者可以大部分使用JS代码就可以构建一个跨平台APP。 Facebook官方说法是learn once, run everywhere, 即在Android 、 IOS、 Browse
xiangzhihong
2018/02/05
6.3K0
React Native运行原理解析
react-native绑定优酷SDK-附效果图和源码
ReactNative绑定优酷SDK需要用到两部分知识: 优酷本身的sdk绑定; RN与原生界面的交互; 效果: RN版本:0.49.3 代码更新日期:2017.10.26 下文也根据绑定需要分为两部
磊哥
2018/05/08
9880
react-native绑定优酷SDK-附效果图和源码
React Native使用原生组件
概述 有时候App需要访问平台API,但React Native可能还没有相应的模块包装;或者你需要复用一些Java代码,而不是用Javascript重新实现一遍;又或者你需要实现某些高性能的、多线程的代码,譬如图片处理、数据库、或者各种高级扩展等等。 我们知道React Native本身对这种偏业务和底层调用是不关心的,这时候我们就想到了原生组件,我们通过调用原生组件,然后经过特定的封装来达到效果。如我们在原生开发中常见的Toast为例: 原生模块封装 假设我们希望可以从Javascript发起一个T
xiangzhihong
2018/02/05
2.4K0
推荐阅读
相关推荐
React Native与Android 原生通信
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验