1. 程式人生 > >【R】文字挖掘——詞雲wordcloud2包

【R】文字挖掘——詞雲wordcloud2包

wordcloud2函式說明

wordcloud2(data, size = 1, minSize = 0, gridSize =  0,  

fontFamily = NULL, fontWeight = ’normal’,  

color = ’random-dark’, backgroundColor = ”white”,  

minRotation = -pi/4, maxRotation = pi/4, rotateRatio = 0.4,  

shape = ’circle’, ellipticity = 0.65, widgetsize = NULL)  

常用引數:

(1)data:詞雲生成資料,包含具體詞語以及頻率;

(2)size:字型大小,預設為1,一般來說該值越小,生成的形狀輪廓越明顯;

(3)fontFamily:字型,如‘微軟雅黑’;

(4)fontWeight:字型粗細,包含‘normal’,‘bold’以及‘600’;;

(5)color:字型顏色,可以選擇‘random-dark’以及‘random-light’,其實就是顏色色系;

(6)backgroundColor:背景顏色,支援R語言中的常用顏色,如‘gray’,‘blcak’,但是還支援不了更加具體的顏色選擇,如‘gray20’

(7)minRontatin與maxRontatin:字型旋轉角度範圍的最小值以及最大值,選定後,字型會在該範圍內隨機旋轉;

(8)rotationRation:字型旋轉比例,如設定為1,則全部詞語都會發生旋轉;

(9)shape:詞雲形狀選擇,預設是‘circle’,即圓形。還可以選擇‘cardioid’(蘋果形或心形),‘star’(星形),‘diamond’(鑽石),‘triangle-forward’(三角形),‘triangle’(三角形),‘pentagon’(五邊形); 

官方包中的幾個案例

案例一:星星圖

library(wordcloud2)  

wordcloud2(demoFreq, size = 1,shape = ’star’)  

案例二:中文詞雲

wordcloud2(demoFreqC, size = 2, fontFamily = ”微軟雅黑”,  

color = ”random-light”, backgroundColor = ”grey”)  

案例三:

wordcloud2(demoFreq, size = 2, minRotation = -pi/2, maxRotation = -pi/2) 

案例四:

wordcloud2(demoFreq, size = 2, minRotation = -pi/6, maxRotation = -pi/6,
rotateRatio = 1)

案例五:文字匯入情況

資料來源:連結: http://pan.baidu.com/s/1jI4gEnc 密碼: uids

data <- read.csv(‘c:/data.csv’, sep=”,” ,header = T)  #讀取原始資料  

head(data)   #檢查資料,檢視是否存在亂碼的情況  

wordcloud2(data, size = 1, shape=’cardioid’,color = ‘random-dark’, backgroundColor = “white”,fontFamily = “微軟雅黑”)

#繪製文字雲,其中data就是我們讀取的資料,size是對應文字大小,shape是繪製形狀  

                                   

案例六:中文詞雲

 wordcloud2(data, size = 2, fontFamily = “微軟雅黑”, color = “random-light”, backgroundColor = “grey”)

案例七:

wordcloud2(data, size = 2, minRotation = -pi/2, maxRotation = -pi/2) 

案例八:

wordcloud2(data, size = 1,color = ’random-light’,  backgroundColor = ”gray”, fontWeight=’bold’,fontFamily = ”微軟雅黑”,  

minRotation = -pi/3, maxRotation = pi/3,rotateRatio = 0.8)  

我們重新設定了字型為粗體,字型旋轉角度在正負60度之間,旋轉比例為80%。

案例九:自定義圖片程式碼

這次用的資料是wordcloud2的示例資料,當然我們也可以使用自定義資料

batman = system.file(“examples/batman.png”,package = “wordcloud2”)

###讀取形狀圖片,注意圖片預設放在wordclou2的sample包中,浩彬老撕的路徑如下:”d:/Program Files/R/R-3.3.0/library/wordcloud2/examples/batman.png”

wordcloud2(demoFreq, figPath = batman, size = 1,color = “black”)

###繪製雲此圖,其中demoFreg即為所用的資料,figPath = batman為所用圖片

(2)文字雲詞圖

有些時候,我們除了需要自定義形狀,可能也需要形成文字,這就需要用到wordcloud2中的新函式letterCloud

程式碼:

letterCloud(demoFreq, word =”R”, wordSize = 2,color = ‘random-dark’)

定製形狀

學會定義顏色可以讓你的詞雲時黃時紫,卻不能像馬像牛又像羊。變形最簡單的方式就是定義shape引數,如wordcloud2(demoFreqC,shape='star')。還支援’diamond’,’cardioid’等引數(都是在js指令碼中預定義好的對應的函式),更多請看函式幫助文件。

內建的幾個引數並不十分有趣,完全的自定義才亦可賽艇。wordcloud2允許你傳入一張圖片,把詞雲填充在圖中的黑色區域。這樣,找到一頭牛和一匹馬,你的雲就可以變換了。

wordcloud2(demoFreqC, figPath='~/Desktop/niu.jpg') 
wordcloud2(demoFreqC, figPath='~/Desktop/ma.jpg') 

程式碼中所需的圖片都可以在上圖擷取,這裡就不放了。另外,如果想畫成字元形狀,你可能需要先畫出字元,再使用wordcloud2函式繪製。該函式背後的邏輯如上所述,先畫出圖片再傳入figPath引數。

定製顏色

這裡的顏色包括背景色和詞語顏色,分別對應backgroundColor和color兩個引數。這兩個引數可以接受CSS認可的任意的引數值,如’red’,’blue’或者’rgb(0,0,0)’以及十六進位制的’#ff2fe9’等。

另外color引數有更多可接受的引數:

內建的隨機色生成方案:random-light和random-dark,在javasript裡定製了相應的隨機函式

javasript回撥函式: 用js撰寫任意的顏色生成函式,如

js_color_fun = “function (word, weight) {

return (weight > 80) ? ‘#f02222’ : ‘#c09292’;

}”

wordcloud2(data, color = htmlwidgets::JS(js_color_fun), backgroundColor = ‘black’)

js_color_fun = “function (word, weight) {

return (weight > 2000) ? ‘#f02222’ : ‘#c09292’;

}”

wordcloud2(demoFreqC, color = htmlwidgets::JS(js_color_fun), backgroundColor = ‘black’)

此處需要使用htmlwidgets的JS函式把字元形式的引數值解析成js函式。

R中的函式向量: js回撥函式想必讓很多純R語言使用者懵逼,最簡單的方式是傳入一個定製後的顏色向量。wordcloud2(demoFreqC, color = ifelse(demoFreqC[, 2] > 2000, ‘#f02222’, ‘#c09292’)這行程式碼R語言函式代替了js回撥函式,效果相同。

內容參考連結:http://blog.csdn.net/sinat_26917383/article/details/51620019

       http://www.xueqing.tv/cms/article/226