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)

這裡調用的是包自帶的中文單詞數據集demoFreqC

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數據地圖素材
全球恐怖襲擊數據的可視分析
一款腦洞大開的表格可視化神器

TAG:R編程語言 | 繪圖 | 數據可視化 |