自定义中文词云图R语言实现(wordcloud2\jieba)

一、实现思路

1首先,加载所需的R包,其中包括jiebaR和wordcloud2,这些包用于分词和生成词云图。
2通过readLines()函数,读取文本文件 “sanguo1.txt” 的内容,文件路径是 “D:\个人文件\课内学习\大三上\数据分析可视化\sanguo1.txt”,并使用UTF-8编码进行读取。
3创建分词器 mixseg,这个分词器是jiebaR包的一部分,用于对文本进行分词。
4通过 mixseg <= text 将文本数据传递给分词器,然后使用 mixseg[text] 进行分词,将分词后的结果保存在 tmp 变量中。
5创建一个自定义的停用词列表 stopword,包含一些不需要显示在词云图中的常用词汇,如"小说"、“网站"等。
6使用 filter_segment() 函数,将停用词从分词结果 tmp 中过滤掉,以去除不需要的词汇。
7使用 tmp = tmp[nchar(tmp) > 1],将只包含一个字的词汇从结果中过滤掉,以保留至少包含两个字的词汇。
8使用 freq() 函数统计词汇的词频,并将结果保存在 words 变量中。
过滤词频低于等于9的词汇,即 words = words[words$freq >= 9,],以筛选出词频较高的词汇。
9设置一个图片路径 sanguo,这个图片将用作词云图的背景。
10使用 wordcloud2() 函数生成词云图,传递 words 数据框作为数据源,设置词云图的参数,如图形路径、大小、字体、颜色、背景颜色和形状等。
11最后,使用 letterCloud() 函数创建另一个词云图,其中 word = “三国演义” 表示在词云图中显示的主题词汇是"三国演义”,并设置其他参数来自定义词云图的外观。

二、完整代码(R语言)

#用于分词
library(jiebaR)
#用于画图
library(wordcloud2)
# 读取数据
text <- readLines("sanguo1.txt", warn = FALSE,encoding = "UTF-8")
#初始化分词器
mixseg = worker()
mixseg<=text
tmp = mixseg[text]  #分词
#自定义停用词
stopword = c("小说","网站","删除","却说","左右","只见","今日","次日","问曰")
tmp = filter_segment(tmp,stopword)  #过滤停用词
tmp = tmp[nchar(tmp)>1]  ##过滤单字
#统计词频
words = freq(tmp)
words = words[words$freq>=9,]#筛选一定频率的词汇

sanguo = system.file("examples/sanguo.png",package = "wordcloud2")

###绘制云此图,其中demoFreg即为所用的数据,figPath = batman为所用图片
#绘画词云图
wordcloud2(words, figPath = sanguo,size = 0.6, fontFamily = "楷体",
           color = "random-light", backgroundColor = "gray",shape = "star")
letterCloud(words, word = "三国演义", wordSize = 2,color = 'random-dark',backgroundColor = "snow")

三、运行结果

在这里插入图片描述

四、复现数据

需要将sanguo.png粘贴到wordcloud2包目录下的examples文件夹下函数才能找到图片。
sanguo.png
在这里插入图片描述
sanguo1.txt文本
链接:https://pan.baidu.com/s/1WcB-NeEzVMIlqaJbntN4SA?pwd=7w16
提取码:7w16

五、常见bug:成功运行但图像无法显示

根本问题:
现在我们直接从镜像网站所下载的wordcloud2是官方2018年所更新的从镜像网站下载的包是有Bug存在的,所以不能自定义词云图形状。

解决办法有两种:

  1. 从Github下载wordcloud2
  2. 直接下载老版本的wordcloud2。

解决步骤:

  1. 卸载已经下载的wordcloud2
  2. 终端输入if (!require(devtools)) install.packages(“devtools”)
  3. 再输入devtools::install_github(“lchiffon/wordcloud2”)
  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值