R學習整理筆記(四)——用wordcloud2包生成文字雲
最近一直在看R的繪圖功能,從【第3章 圖形初階】到【第6章 基本圖形】再到【第19章 使用ggplot2進行高級繪圖】。基本語法概念過完了,不過圖形還是得多畫畫才能熟練。枯燥之餘,想玩一下書上沒提到的文字雲功能。杜雨寫的R語言信息可視化——文字雲是篇挺好的教程,另外Little_Rookie的R語言︱文本挖掘——詞雲wordcloud2包寫的更詳細。我也主要參考他們的思路。
- 用到的工具包:wordcloud2(wordcloud的升級版)。調用方式按常規方法:
install.packages("wordcloud2")library(wordcloud2)
學習各類乾枯枯的語法之前,迫不及待想先看下效果:
wordcloud2(demoFreq, size = 1, fontFamily = "微軟雅黑", color = "random-light", backgroundColor = "grey") #demoFreq是該包自帶的數據集
- 切入正題,wordcloud2的相關語法
幫助文檔有詳細的usage和arguments,但是看中文總比看英文輕鬆,就直接借用中文參數介紹了:
大致看下來,wordcloud2語法並不複雜,但想要畫出一幅頗具美感的文字雲,還是得花很多心思的,在配色、字體、形狀等各方面都要摳細節。
- 自定義圖片形狀
除了包自帶的形狀,還可以選取自己想要的圖片做文字雲的形狀。自定義形狀的時候,最好選用白背景的圖,這樣生成的形狀也乾淨許多。
我找了張平底鍋pan的圖片(pan.jpg),把它放在R安裝文件里(圖片t是包自帶的),如圖:
然後上代碼:
pan <-system.file("examples/pan.jpg",package = "wordcloud2") #要使用的圖片路徑wordcloud2(demoFreq, figPath =pan, size = 1, color = "random-light",backgroundColor = "grey") #figPath調用圖片
本以為會穩噹噹的出現想要的結果。然額!bug還是不可避免的出現了。竟然顯示出這個!
好了,又是各種搜帖找解決辦法……半天又這麼消磨過去了,終於,找到了。。。
參考Rstudio使用wordcloud2製作詞雲時自定義圖片不顯示?給出的解答:問題出在wordcloud2包的安裝方式上,利用package安裝,會出現這個問題。解決辦法:通過github官方安裝devtools::install_github("lchiffon/wordcloud2"),具體運行代碼就是:
install.packages(devtools) devtools::install_github("lchiffon/wordcloud2")
以上代碼相當於重新安裝了wordcloud2包,接下來要再執行下library語句:
library(wordcloud2)
然後,由於包重新安裝,還要記得把平底的圖片重新放進R的安裝文檔里(wordcloud2/examples下面)。接下來,再運行:
pan <-system.file("examples/pan.jpg",package = "wordcloud2")wordcloud2(demoFreq, figPath =pan, size = 1, color = "random-light",backgroundColor = "grey")
哈哈~總算OK了!苦苦探索後,看到成功的這一瞬間好激動!!!
上面探索了自定義圖片,接下來探索wordcloud2中另外一個好用的函數letterCloud()。
- 文字雲詞圖letterCloud()
說白了,就是直接拿文字作為雲詞圖的圖案形狀。先試一下:
letterCloud(demoFreqC, word ="雲",wordSize = 2, color = random-dark)
letterCloud(demoFreq, word ="wind",wordSize = 2, color = random-dark)
上面練的案例都是直接拿wordcloud2包自帶的demoFreq和demoFreqC數據集,接下來就可以使用自己的數據集,設計想要的圖案。我編了個csv表,表中是目前我所在工作部門的相關詞條,寫了62條,截幾條:
這個表放在電腦桌面上,文檔名erbu.csv。
erbu <- read.csv("C:/Users/hp/Desktop/erbu.csv") #讀取數據wordcloud2(erbu, size = 1, fontFamily = "微軟雅黑", color = "random-light",shape="circle", backgroundColor = "grey") #畫文字雲
運行以後,就可以看到成果了。嘻嘻嘻,我機靈的把領導名字的詞條頻數設成最大,讓他的大名最顯眼,然後把圖發給他,哈哈!get討好領導的創意小技能了~本想貼下圖,想想還有好多同事名字啥的,就不po了,免得被他們guai zui。。。
撤了撤了,打卡回家吃飯~
推薦閱讀:
※數據分析神器Tableau——讓你的數據會說話
※Pandas Highcharts 可視化示例
※R語言解析json數據地圖素材
※全球恐怖襲擊數據的可視分析
※一款腦洞大開的表格可視化神器