用R語言繪製詞雲圖

參考自微信公衆號: 段小麻 R語言統計與繪圖 昨天

 

溫馨提示: Ctrl + Shift + C 註釋代碼

#安裝相關的包
install.packages("wordcloud2")
# 導入包
library(wordcloud2)
# 跑一個Demo
wordcloud2(demoFreqC)

運行結果:

# 設置背景色
wordcloud2(demoFreqC, size = 0.6,shape = 'star',backgroundColor = "yellow")

# 設置背景色,並定義要使用的字體
wordcloud2(demoFreqC, size = 0.6,shape = 'star',backgroundColor = "pink",fontFamily = "微軟雅黑")

 

以下參考自博客園:https://www.cnblogs.com/nxld/p/6344233.html?utm_source=itdadao&utm_medium=referral

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)

案例五:文本導入情況

# 從剪切板讀取數據,包括表頭
data <- read.table(file = "clipboard", sep = "\t", header = T)
# 查看數據集
data
# 預覽數據集
head(data)
# 繪製詞雲圖
wordcloud2(data, size = 1, shape='cardioid',color = 'random-dark', backgroundColor = "white",fontFamily = "微軟雅黑")

案例六:中文詞雲

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

案例七:

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

案例八:

把字體設置爲微軟雅黑加粗,字體旋轉角度在正負60度之間,旋轉比例爲80%。

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

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

案例九:自定義圖片代碼

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章