使用R语言绘制词云

R语言不仅有丰富的包可以用于数据统计分析,而且可以对数据进行可视化。这边文章主要介绍下如何用R语言绘制词云。

工具:

  • R语言IDE
  • ggplot2包
  • wordcloud包

安装作图包

因为绘制词云需要用到ggplot2包和wordcloud包。所以,可以在R studio输入如下命令,需要选择mirror:

chooseCRANmirror()

之后,就可以在这个镜像中安装需要的作图包:

install.packages("ggplot2")
install.packages("wordcloud")

预备数据

绘制词云需要的数据格式就是“词语\t权重”,我们可以将每个topic的词语放在一个文本文档中,有多少个topic就绘制多少张词云图。
如下是一个topic的词语:

旅游景点

绘制词云

如下代码便用于生成词云。其中,path为所有topic的文本文档所在路径。topicNum为topic的个数。接下来就是调用作图包进行绘制,其中字体,大小都可以设定,但是其它很多字体绘制出来的词云会出现词语重叠的现象,很奇怪,目前我也不知道什么原因。希望哪位前辈能指教一下,不胜感激。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
path <- "D:/workspace/wordcloud/cloud0/"
topicNum <- 2
for (i in seq(0,topicNum-1,1)){
infile <- paste(path, i, ".txt", sep="")
outfig1 <- paste(path, "distribution_", i, ".png", sep="")
outfig2 <- paste(path, "topic_", i, ".png", sep="")
data <- read.table(infile, fileEncoding = "UTF-8", header=TRUE, sep="\t")
data0 = data.frame(word=data$tag, freq=data$point)
data1=cbind(data0, order=order(data0$freq,decreasing=TRUE))
##分布图
png(file=outfig1, bg="transparent")
library(ggplot2)
qplot(freq, data=data1, geom="histogram", binwidth=1)
#d=ggplot(data1, aes(x=freq))+xlim(0,0.00005)
#d+geom_freqpoly()
dev.off()
##词云
png(file=outfig2, bg="transparent")
#设置一个颜色系:
library(RColorBrewer)
col=brewer.pal(8, "Dark2")
#设置字体
windowsFonts(myFont=windowsFont("微软雅黑"))
#画图
library(wordcloud)
wordcloud(data1$word, data1$freq, random.order=FALSE, random.color=FALSE, colors=col, family="myFont", min.freq=0.1)
###可以先排序限制TOPN入画,也可以直接在函数上加min.freq=0.00001,限制TopN入画
dev.off()
}

最后,绘制得到的结果示例:
旅游 专业