這一篇跟大家分享R語言信息可視化——文字雲。
R語言可以輕鬆處理信息可視化,並且很早就有專用的信息可視化包——WordCloud。
可是這個第一版的文字雲工具,真的超級爛,不僅參數多,而且呈現效果爛,無法自定義形狀,顏色也不好搭配。
今天的主角是WordCloud2,該包的升級版(雖然我不知道這兩個包是否是同一個作者開發的)。
R語言配置環境:
R x64 3.31/Rstudio 0.99.903/wordcloud2 0.2.0
加載字符雲包:
library(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』(五邊形);
導入數據:
Data<-read.csv("F:\\數據可視化\\數據分析\\R\\R語言學習筆記\\文字雲\\DemoFreq.csv")
數據是我在以前文章中曾經分享過的關於文字雲在線製作工具所用到的。
作圖語法:
eg1: wordcloud2(Data, size = 1,shape = 'star') #最簡單的依據,定義好數據集,文字大小,形狀。
而且該包所生成的文字雲頁面是支持滑鼠懸浮顯示動態標籤的。(滑鼠停留在對應文字上,會顯示出該文字對應的權重)。
eg2: wordcloud2(Data , size = 2, fontFamily = "微軟雅黑",color = "random-light", backgroundColor = "grey")
eg3: wordcloud2(Data, size = 2, minRotation = -pi/2, maxRotation = -pi/2)
eg4: wordcloud2(Data, size = 2, fontFamily = "微軟雅黑",minRotation = -pi/6, maxRotation = -pi/6,rotateRatio = 1)
由於自己的數據集數量太少,完全展示不出來該包文字雲的可視化效果精妙之處,以下將使用該包自帶的案例數據集進行演示。
wordcloud2(demoFreq, size = 2, fontFamily = "微軟雅黑",
color = "random-light", backgroundColor = "grey")
wordcloud2(demoFreq, size = 2, fontFamily = "微軟雅黑",minRotation = -pi/6, maxRotation = -pi/6,rotateRatio = 1)
wordcloud2(demoFreq, size = 2, shape = 'star',fontFamily = "微軟雅黑", color = "random-light", backgroundColor = "grey")
以上僅僅使用內置的形狀或者默認形狀做出的文字雲,其實該包還支持自定義圖片形狀或者自定義文字形狀。
圖片形狀:
下載一張PNG或者JPEG格式的白色背景圖片(最好背景是白色的)。
將該圖片放在你的R語言安裝文件裡的WordCloud2的案例圖片包中並命名(內有一張黑色背景推特logo圖片)。
Emotion <-system.file("examples/Panda.png",package = "wordcloud2") #調用圖片路徑
wordcloud2(demoFreq, figPath = Emotion, size = 1,color = "random-light") #使用默認案例數據集並結合阿寶的圖片呈現文字雲效果
艾瑪,這個跟阿寶真的不是很像呀,這軟體,真坑。
那就再試一試人家軟體自帶的推特logo文字雲圖的效果吧。
Emotion <-system.file("examples/t.png",package = "wordcloud2")
wordcloud2(demoFreq, figPath = Emotion, size = 1,color = "random-light")
這個倒還跟小鳥有點像。
文字形狀:
這裡所謂的文字性狀其實是設定一個字符作為整體形狀同時將數據集中的文字以加權的形式映射到定義好的文字形狀中。
letterCloud(demoFreq, word = "LOVE", wordSize = 2,color = 'random-dark',backgroundColor = "snow")
letterCloud(demoFreq, word = "中秋", wordSize = 2,color = 'random-dark',backgroundColor = "snow")
好了,關於這個包就演示到這裡,感興趣的童鞋可以自己研究研究。
魔方學院QQ群:
QQ群:
微信群: