R-wordcloud: 詞云圖
好幾位讀者來信說,《R語言數(shù)據(jù)可視化之美》(增強(qiáng)版)的詞云圖的代碼有問題,我今天更新了一輪,這主要原因在R語言及其包的更新,導(dǎo)致源代碼有可能運行錯誤。R語言的優(yōu)勢在于其開源,有世界的專家學(xué)者一起開發(fā)新的包,以及其R語言本身不斷更新迭代增強(qiáng);這也是它的問題,因為很多時候不同包由于版本問題,會導(dǎo)致老版本的程序運行有誤。
R中的wordcloud包提供了繪制詞云圖的函數(shù):wordcloud()、comparison.cloud()和commonality. cloud()。其中,用wordcloud(words,freq)函數(shù)繪制詞云圖時,只需要提供文本(words)和對應(yīng)的頻率(frequency);comparison.cloud(term.matrix)和cpommonality.cloud(term.matrix)可以繪制對比詞云圖,term. matrix是一個行名,代表文本,每列數(shù)值代表文本對應(yīng)的頻數(shù)的矩陣。圖3-9-3 單篇文章的詞云圖和圖3-9-4兩篇文章的詞云圖的具體代碼如下所示。
library(tm)library(wordcloud)Paper1<-paste(scan("Paper1.txt", what = character(0),sep = ""), collapse = " ") #讀入TXT 文檔1Paper2<-paste(scan("Paper2.txt", what = character(0),sep = ""), collapse = " ") #讀入TXT 文檔2tmpText<- data.frame(c(Paper1, Paper2),row.names=c("Text1","Text2"))df_title <- data.frame(doc_id=row.names(tmpText),text=tmpText$c.Paper1..Paper2.)ds <- DataframeSource(df_title)#創(chuàng)建一個數(shù)據(jù)框格式的數(shù)據(jù)源,首列是文檔id(doc_id),第二列是文檔內(nèi)容corp <- VCorpus(ds)#加載文檔集中的文本并生成語料庫文件corp<- tm_map(corp,removePunctuation) #清除語料庫內(nèi)的標(biāo)點符號corp <- tm_map(corp,PlainTextDocument) #轉(zhuǎn)換為純文本corp <- tm_map(corp,removeNumbers) #清除數(shù)字符號corp <- tm_map(corp, function(x){removeWords(x,stopwords())}) #過濾停止詞庫term.matrix <- TermDocumentMatrix(corp)#利用TermDocumentMatrix()函數(shù)將處理后的語料庫進(jìn)行斷字處理,生成詞頻權(quán)重矩陣term.matrix <- as.matrix(term.matrix) #頻率colnames(term.matrix) <- c("Paper1","paper2")df<-data.frame(term.matrix)write.csv(df,'term_matrix.csv') #導(dǎo)出兩篇文章的頻率分析結(jié)果
導(dǎo)出的文本頻率分析結(jié)果'term_matrix.csv'如圖3-9-2所示,其中文本為索引行名,然后每列對應(yīng)每篇文章的文本頻率,然后我們使用一下語句就可以展示單篇和兩篇文章的詞云圖:
df<-read.csv('term_matrix.csv',header=TRUE,row.names=1)#圖3-9-3(a): 單篇文章Paper1數(shù)據(jù)的展示wordcloud(row.names(df) , df$Paper1 , min.freq=10,col=brewer.pal(8, "Dark2"), rot.per=0.3 )#圖3-9-3(b): 單篇文章Paper2數(shù)據(jù)的展示wordcloud(row.names(df)?,?df$Paper2?,?min.freq=10,col=brewer.pal(8,?"Dark2"),?rot.per=0.3?)#兩篇文章數(shù)據(jù)的對比#圖3-9-4(a):兩篇文章的獨有部分comparison.cloud(df,max.words=300,random.order=FALSE,colors=c("#00B2FF", "red"))#圖3-9-4(b):兩篇文章的共有部分commonality.cloud(df,max.words=100,random.order=FALSE,color="#E7298A")
? ? ? ? ? ? ? ? ? ? ? ? ? ?

圖3-9-2 ?詞的頻率數(shù)據(jù)

圖3-9-3 ?單篇文章的詞云圖

圖3-9-4 ?兩篇文章的詞云圖
【本文內(nèi)容摘自《R語言數(shù)據(jù)可視化之美》】

如需聯(lián)系EasyShu團(tuán)隊
請加微信:EasyCharts
微信公眾號【EasyShu】博文代碼集合地址
https://github.com/Easy-Shu/EasyShu-WeChat
《R語言數(shù)據(jù)可視化之美》增強(qiáng)版

增強(qiáng)版配套源代碼下載地址
Github
https://github.com/Easy-Shu/Beautiful-Visualization-with-R
百度云下載
https://pan.baidu.com/s/1ZBKQCXW9TDnpM_GKRolZ0w?
提取碼:jpou

