【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