前言
本書主要介紹如何使用R中的ggplot2包及其拓展包,以及ggraph、circlize和plot3D等包繪制專業圖表。本書先介紹了R語言編程基礎知識,以及使用dplyr、tidyr、reshape2等包的數據操作方法;再對比了base、lattice和ggplot2等包的圖形語法。本書繫統性地介紹了使用ggplot2包及其拓展包繪制類別對比型、數據關繫型、時間序列型、整體局部型、地理空間型等常見的二維圖表的方法,ggraph、igraph、circlize等包繪制層次、網絡關繫型圖表,以及使用plot3D包繪制三維圖表(包括三維散點圖、柱形圖和曲面圖等)的方法。另外,本書也介紹了論文中學術圖表的圖表配色、規範格式等相關技能與知識。
本書定位
雖然現在Python語言越來越流行,尤其是在機器學習與深度學習等領域,但是R語言在數據分析與可視化方面仍然具有絕對的優勢,其中ggplot2包及其拓展包人性化的繪圖語法大受用戶的喜愛,特別是生物信息與醫學研究者。Nature、Science和Cell等期刊上大量的圖表都是使用R語言繪制的,所以很有必要繫統性地介紹R語言的繪圖方法。
Rggplot2有兩本很經典的教程:ggplot2ElegantGraphicsforDataAnalysis和RGraphicsCookbook,兩本書重點介紹了ggplot2包的繪圖語法及常見圖表的繪制方法,但是其中介紹的圖表種類並不多。所以本書基於R中的ggplot2包及其拓展包和plot3D包,繫統性地介紹了幾乎所有常見的二維和三維圖表的繪制方法,包括簡單的柱形圖繫列、條形圖繫列、折線圖繫列,以及復雜的和弦圖、矩形樹狀圖、日歷圖等。
讀者對像
本書適用於想學習數據分析與可視化相關專業課程的高校學生,以及對數據分析與可視化感興趣的職場人士閱讀,尤其是R語言用戶。從軟件掌握程度而言,本書同樣適用於零基礎學習R語言的用戶。
閱讀指南
全書內容共有12章,其中,第1章和第2章是後面9章的基礎,第3~11章都是獨立章節,可以根據實際需求有選擇性地進行學習。
第1章介紹R語言編程與數據可視化基礎,對比了base、lattice和ggplot2包的圖形語法,重點介紹了ggplot2包的圖形語法;
第2章介紹R語言數據處理基礎,重點介紹了使用dplyr、tidyr、reshape2等包的數據操作方法;第3章介紹類別比較型圖表,包括柱形圖繫列、條形圖繫列、南丁格爾玫瑰圖、徑向柱圖等約30張圖表;
第4章介紹數據關繫型圖表,包括二維和三維散點圖、氣泡圖、等高線圖、三維曲面相圖、二維和三維瀑布圖、相關繫數熱力圖等約60張圖表;
第5章介紹數據分布型圖表,包括一維、二維和三維的統計直方圖和核密度估計圖、抖動散點圖、點陣圖、箱形圖、小提琴圖等約50張圖表;
第6章介紹時間序列型圖表,包括折線圖和面積圖繫列、日歷圖、螺旋圖繫列、量化波形圖、地平線圖等約20張圖表;
第7章介紹局部整體型圖表,包括餅圖、散點復合餅圖繫列、馬賽克圖、華夫餅圖等約20張圖表;
第8章介紹高維數據的可視化方法,包括分面圖繫列、矩陣散點圖、熱力圖、平行坐標繫圖、RadViz圖、圖標法等約20張圖表;
第9章介紹層次關繫型圖表,包括節點鏈接圖、旭日圖、矩形樹狀圖、樹形圖、桑基圖等約10多張圖表;
第10章介紹網絡關繫型圖表,包括節點鏈接圖、弧線鏈接圖、蜂巢網絡圖、和弦圖等約10多張圖表;
第11章介紹地理空間型圖表,包括從世界到國家、再到地方局部的地圖,還有分級統計地圖,點描法地圖,帶氣泡、柱形、餅圖、連接線的地圖,等位地圖、線型地圖等30多張不同的地圖圖表。
第12章介紹論文中學術圖表的常用技能,包括常見的截圖與圖片處理軟件及其功能、矢量圖片的修改、論文中學術圖表數據的提取與重繪、論文中學術圖表的規範與調整等。
應用範圍
本書的圖表繪制方法都是基於R中的ggplot2包及其拓展包和其他繪圖包實現的,幾乎適應於所有常見的二維和三維圖表。本書以虛擬地圖的數據為例講解不同的地理空間型圖表,讀者需將繪圖方法應用到實際的地理空間型圖表。
適用版本
本書所用R版本為:3.3.3。R作為免費的開源軟件,數據分析與可視化的包更新迭代很快,這是它的優勢。但是有時候有些代碼運行可能會由於R或者R包版本的更新,而出現函數棄用(deprecated)的情況。此時,需要自己更新代碼,使用新的函數替代原有的函數。
源代碼
本書配有幾乎所有圖表的R語言源文件及其.csv或.txt格式的數據源文件。但是需要注意的是,如果運行的R語言版本沒有安裝相應的數據分析與可視化的包(package),那麼請預先安裝相應的包,纔能成功運行代碼。同時,也請注意運行R語言和R包的版本是否已經更新。源代碼下載Github網址:https://github.com/EasyChart/Beautiful-Visualization-with-R。
與我聯繫
因本人知識與能力所限,書中紕漏之處在所難免,歡迎並懇請讀者朋友們給予批評與指正,可以通過郵箱聯繫筆者;如果讀者有關於R語言學術圖表或商業圖表繪制的問題,可以與筆者交流。另外,更多關於R語言圖表繪制的教程請關注筆者的博客、專欄和微博平臺。也可以重點關注我們的微信公眾號:EasyCharts,還可以添加筆者微信:EasyCharts。筆者的R語言數據分析與可視化的文章會優先發表在微信公眾號平臺。
致謝
桃李春風一杯酒,江湖夜雨十年燈。筆者的處女作《Excel數據之美:科學圖表與商業圖表的繪制》也至今出版逾兩年,一直想著要修訂這本書。但是舊書未翻新,新書忙於碼字改稿,實在是有愧於讀者。其實,在撰寫這本新書的時候,數次想放棄。寫書實在是一件費力勞神的事情,筆者是憑借著對數據可視化的熱愛纔堅持至今。
這本書從2017年5月25日開始動筆,斷斷續續居然也花費了兩年的時間。與其說是花費,不如說是陪伴吧。筆者經常對朋友開玩笑說,心情不好的時候碼碼代碼、畫畫圖表,是一件消磨時間、放松心情的事情。
在斷斷續續的寫稿中,筆者也認識了很多熱愛數據分析與可視化的朋友,甚是榮幸,也得益於他們的幫助。很感謝《R語言遊戲數據分析與挖掘》的作者謝佳標老師和先鋒信息科技有限公司CEO林禎舜老師對筆者的鼓勵與幫助,也因此有幸參加了2018年的R語言大會;也非常感謝在碼字、寫代碼時一起交流學習的李譽輝(四川大學高分子學院)、杜雨(美團用戶平臺—大數據與算法部—商業分組部)、劉鈺(河南大學土木建築學院)、厚缊(深圳中觀經濟咨詢有限公司)等諸多技術大佬。因為有你們的幫助,所以纔有今天這本書。
最後,想對大家說,也是對自己說:且將新火試新茶,詩酒趁年華!
增強版特別說明
隨心而動,立志而行。現在的生活紛紛擾擾,可以做自己喜歡的事情實屬難得。筆者的《R語言數據可視化之美:專業圖表繪制指南》於2019年5月出版,沒想到如此受大家喜愛,有些讀者都買了好幾本。實在慚愧,由於《地圖管理條例》的相關規定,涉及地圖的內容都需要嚴格審查纔能出版,所以筆者不得不刪減了嘔心瀝血撰寫的關於地理空間型圖表的章節,然而很多讀者其實特別關注這個部分。
筆者後來想到一個迂回曲折的辦法,自己虛擬了幾個國家和城市的信息數據,使用虛擬地圖的方式講解各種地理空間型圖表,這樣纔使得相關內容順利出版。另外,筆者順便把讀者反映的層次關繫型和網絡關繫型圖表也逐一添加進增強版中。到目前為止,常見的圖表類型基本都已經被囊括書中。
R包的更新迭代很快,也層出不窮。在此,非常感謝辛勤的開發者們。小時候學到一句話:學如逆水行舟,不進則退。R包的更新與創新,也促使大家要不斷地學習,纔能跟上新的技術。所以,也希望大家不斷學習、不斷進步。
再次感謝杜雨、李譽輝、劉鈺、厚缊等諸多技術大佬。因為有你們的幫助,所以纔有今天這本書。最後,想再次對大家說,也是對自己說:學如逆水行舟,不進則退。
作者
2019年9月2日