內容簡介
《ggplot2:數據分析與圖形藝術》介紹的ggplot2是R中新穎的數據可視化包,功能強大、靈活便捷,其靈感源自Leland Wilkison的《圖形的語法》一書。使用ggplot2可以輕鬆實現:
高質量圖形的繪製,自動化添加圖例。
疊加來自不同數據源的多個圖層(點、綫、地圖.瓦片圖、箱綫圖等),自適應通用標度。
利用R強大的建模功能添加平滑麯綫,如loess、綫性模型、廣義可加模型和穩健迴歸。
保存任意ggplot2圖形,方便修改或重復使用。
製作主題,滿足內部定製或雜誌風格的需求,便捷地應用到多幅圖形上。
從視覺角度上審視你的圖形,斟酌每一部分數據如何呈現在圖形上。
如果你想將枯燥的數據轉化為生動,形象的圖片,《ggplot2:數據分析與圖形藝術》絕對大有裨益。你需要瞭解R的基本知識(比如如何將數據導入到R),不過ggplot2是專門為繪圖量身打造的“迷你語言”,在《ggplot2:數據分析與圖形藝術》中你就可以學到你需要的所有知識。在閱讀完《ggplot2:數據分析與圖形藝術》之後,你就可以針對你的問題繪製齣精確定製的圖形,並且發現將腦海中的圖片繪製在屏幕上已經變得輕而易舉瞭。
作者簡介
Hadley Wickham,RStudio首席科學傢,美國萊斯大學統計學助理教授,畢業於愛荷華州立大學統計係。Hadley是R社區活躍的人之一,代碼風格獨樹一幟,緻力於開發用於數據處理、分析、成像的工具,截至2012年已經開發瞭超過30個高質量的R軟件包,比如ggplot2,lubridate,plyr,reshape2,stringr,httr等。
內頁插圖
前言/序言
每當我們看到一個新的軟件,第一反應會是:為什麼又要發明一個新軟件?ggplot2是R世界裏相對還比較年輕的一個包,在它之前,官方R已經有自己的基礎圖形係統(graphics包)和網格圖形係統(grid包),並且Deepayan Sarkar也開發瞭lattice包,看起來R的世界對圖形的支持已經足夠強大瞭。那麼我們不禁要問,為什麼還要發明一套新的係統?設計理念
打個比方,想想我們小時候怎樣學中文的。最開始的時候我們要識字,不認識字就沒法閱讀和寫作,但我們並不是一直按照一個個漢字學習的,而是通過句子和具體的場景故事學習的。為什麼不在小學時背六年字典呢?那樣可能認識所有的漢字。原因很簡單,光有單字,我們不會說話,也無法閱讀和寫作。我們缺的是什麼?答案是對文字的組織能力,或者說語法。
R的基礎圖形係統基本上是一個“紙筆模型”,即:一塊畫布擺在麵前,你可以在這裏畫幾個點,在那裏畫幾條綫,指哪兒畫哪兒。後來lattice包的齣現稍微改善瞭這種情況,你可以說,我要畫散點圖或直方圖,並且按照某個分類變量給圖中的元素上色,此時數據纔在畫圖中扮演瞭一定的中心角色,我們不用去想具體這個點要用什麼顔色(顔色會根據變量自動生成)。然而,lattice繼承瞭R語言的一個糟糕特徵,就是參數設置鋪天蓋地,足以讓人窒息,光是一份xyplot()函數的幫助文檔,恐怕就夠我們消磨一天時間瞭,更重要的是,lattice仍然麵嚮特定的統計圖形,像基礎圖形係統一樣,有直方圖、箱綫圖、條形圖等等,它沒有一套可以讓數據分析者說話的語法。
那麼數據分析者是怎樣說話的呢?他們從來不會說這條綫用#FE09BE顔色,那個點用三角形狀,他們隻會說,把圖中的綫用數據中的職業類型變量上色,或圖中點的形狀對應性彆變量。有時候他們畫瞭一幅散點圖,但馬上他們發現這幅圖太擁擠,最好是能具體看一下裏麵不同收入階層的特徵,所以他們會說,把這幅圖拆成七幅小圖,每幅圖對應一個收入階層。然後發現散點圖的趨勢不明顯,最好加上迴歸直綫,看看迴歸模型反映的趨勢是什麼,或者發現圖中離群點太多,最好做一下對數變換,減少大數值對圖形的主導性。
從始至終,數據分析者都在數據層麵上思考問題,而不是拿著水彩筆和調色闆在那裏一筆一劃作圖,而計算機程序員則傾嚮於畫點畫綫。LelandWilkinson的著作在理論上改善瞭這種狀況,他提齣瞭一套圖形語法,讓我們在考慮如何構建一幅圖形的時候不再陷在具體的圖形元素裏麵,而是把圖形拆分為一些互相獨立並且可以自由組閤的成分。這套語法提齣來之後他自己也做瞭一套軟件,但顯然這套軟件沒有被廣泛采用;幸運的是,Hadley Wickham在R語言中把這套想法巧妙地實現瞭。
為瞭說明這種語法的思想,我們考慮圖形中的一個成分:坐標係。常見的坐標係有兩種:笛卡爾坐標係和極坐標係。在語法中,它們屬於一個成分,可自由拆卸替換;笛卡爾坐標係下的條形圖實際上可以對應極坐標係下的餅圖,因為條形圖的高可以對應餅圖的角度,本質上沒什麼區彆。因此在ggplot2中,從一幅條形圖過渡到餅圖,隻需要加極少量的代碼,把坐標係換一下就可以瞭。如果我們用紙筆模型,則可以想象,這完全是不同的兩幅圖,一幅圖裏麵要畫的是矩形,另一幅圖要畫扇形。
更多的細節在本書中會介紹,這裏我們隻是簡略說明用語法畫圖對用紙筆畫圖來說在思維上的優越性;前者是說話,後者是說字。
探索數據的靈魂:可視化與分析的交響 在信息爆炸的時代,如何從海量的數據中提煉齣有價值的見解,並以清晰、直觀的方式呈現給他人,已成為一項至關重要的技能。本書並非聚焦於某個特定軟件或工具的操作指南,而是深入探討數據分析與可視化這一更為普適且深刻的領域。我們將一同踏上一段探索數據內在規律、賦予其生命力的旅程,讓枯燥的數字躍然紙上,講述引人入勝的故事。 第一篇:看見數據——可視化之美 數據可視化並非簡單的圖錶堆砌,它是一門藝術,也是一門科學。成功的可視化能夠洞察隱藏的模式、揭示意想不到的關聯,甚至激發新的思考。在本篇中,我們將超越錶麵的圖形元素,深入探究可視化的核心原則與哲學。 數據的本質與可視化前的思考: 在著手繪製任何圖錶之前,最關鍵的步驟是理解你的數據。我們將討論如何審視數據的結構、類型(定量、定性)、分布以及變量之間的關係。這一階段的深入思考,將直接決定後續可視化方案的有效性。我們會探討如何根據研究問題和目標受眾來確定最適閤的可視化類型,是選擇散點圖來展示兩個變量的關係,還是柱狀圖來比較不同類彆的值,亦或是摺綫圖來追蹤時間序列的變化?每一個選擇都蘊含著對數據特徵的精準把握。 圖錶設計的黃金法則: 優秀的可視化作品,其背後有著精心設計的考量。我們將剖析那些能夠讓圖錶脫穎而齣的設計原則。這包括如何有效利用顔色、形狀、大小等視覺元素來傳達信息,如何避免信息過載和視覺乾擾,如何構建清晰的坐標軸和圖例,以及如何確保信息傳達的準確性和無歧義性。我們會深入討論“少即是多”的原則,以及如何通過簡潔而有力的設計來增強數據的可讀性。例如,選擇與數據含義相符的調色闆,而非僅僅是隨機的色彩組閤;閤理設置刻度,避免誤導性的視覺壓縮或拉伸;使用清晰的標簽和標題,讓讀者一眼就能理解圖錶所要錶達的核心信息。 不同類型數據的可視化策略: 不同的數據類型需要不同的可視化方法。我們將係統地介紹適用於各種數據場景的圖錶類型及其應用。 定量數據: 探索連續型數據(如身高、溫度)的分布和關係。我們會討論直方圖、箱綫圖、密度圖、散點圖等,以及如何使用它們來識彆異常值、偏態分布和相關性。 定性數據: 分析分類數據(如性彆、城市)的構成和比較。我們將介紹柱狀圖、餅圖、堆積柱狀圖、樹狀圖等,並探討如何有效展示比例、頻率和層級結構。 多變量數據: 如何在一個圖錶中同時展示多個變量的影響?我們會探討氣泡圖、熱力圖、平行坐標圖等,以及如何通過巧妙的設計來捕捉變量間的復雜交互。 時間序列數據: 觀察數據隨時間的變化趨勢。摺綫圖是經典的選擇,但我們也會探討更高級的技巧,如季節性分解、移動平均綫等,來揭示時間序列數據的深層模式。 敘事性可視化: 數據分析的最終目的往往是溝通和說服。本部分將引導你如何將數據轉化為引人入勝的故事。我們將學習如何構建一個清晰的敘事邏輯,將一係列圖錶有機地串聯起來,引導讀者逐步理解數據背後的洞察。這包括如何選擇關鍵的圖錶來支持你的論點,如何撰寫富有洞察力的標題和注釋,以及如何根據受眾的背景知識來調整你的錶達方式。我們還將探討如何利用數據可視化來支持決策、論證觀點,甚至激發公眾的討論。 第二篇:洞察數據——分析的深度 可視化是看見數據的窗口,而數據分析則是深入挖掘數據內在價值的過程。本篇將帶你穿越數據的迷霧,運用係統性的方法來理解、解釋和提取有意義的信息。 理解你的數據:探索性數據分析(EDA)的基石: 在正式建模之前,充分瞭解你的數據是至關重要的。我們將強調探索性數據分析(EDA)的重要性,它是一個迭代的過程,通過統計摘要、可視化以及變量之間的關係探索,來初步理解數據的特徵、潛在問題和模式。我們會學習如何計算均值、中位數、方差等基本統計量,如何檢測缺失值和異常值,以及如何識彆變量之間的相關性。EDA的過程就像是一位偵探,通過收集和分析綫索,逐步拼湊齣案件的全貌。 從描述到推斷:統計學思維的實踐: 數據分析離不開統計學。我們將迴顧並實踐一些核心的統計學概念,幫助你理解數據的隨機性和不確定性。這包括概率分布、假設檢驗、置信區間等。我們將學習如何根據研究目的選擇閤適的統計檢驗方法,如何解讀統計檢驗的結果,以及如何避免常見的統計誤區。例如,理解p值的含義,區分相關性和因果關係,以及如何在有限的樣本數據上進行閤理的推斷。 識彆模式與趨勢: 數據中蘊含著各種模式和趨勢,從周期性波動到長期增長,從聚集效應到離散分布。我們將學習如何運用統計方法和可視化技術來識彆和量化這些模式。這可能涉及到時間序列分析中的趨勢分解,聚類分析中的群體識彆,或者迴歸分析中的關係建模。我們將關注如何區分隨機噪聲和真實的信號,以及如何利用識彆齣的模式來做齣預測或解釋現象。 探索變量之間的關係: 現實世界中的現象往往是多變量相互作用的結果。本部分將深入探討如何研究變量之間的關聯。我們將介紹相關性分析,瞭解 Pearson 相關係數、Spearman 等不同度量方式的含義和適用場景。更進一步,我們將探討迴歸分析,學習如何構建模型來預測一個變量如何受到其他變量的影響,以及如何解釋模型的係數和擬閤優度。這包括綫性迴歸、邏輯迴歸等基本模型,以及如何評估模型的性能。 分組與比較: 當我們需要比較不同群體或條件下的數據時,統計檢驗成為強大的工具。我們將學習如何設計實驗或觀察性研究,並運用t檢驗、ANOVA(方差分析)等方法來判斷不同組彆之間是否存在顯著差異。我們會關注研究設計的嚴謹性,以及如何正確解釋統計檢驗的結果,避免得齣錯誤的結論。 第三篇:連接分析與可視化——實現有意義的溝通 數據分析的最終價值在於其能夠被理解和應用。本篇將聚焦於如何將分析結果有效地轉化為清晰、有說服力的可視化,從而實現信息的無縫溝通。 從分析洞察到可視化錶達: 分析階段的發現並非孤立存在,它們需要通過可視化來得以具象化和傳播。我們將學習如何根據分析得齣的關鍵結論,選擇最能支持這些結論的可視化形式。例如,如果分析發現兩個變量之間存在強烈的綫性關係,那麼散點圖和迴歸綫將是理想的選擇。如果分析揭示瞭不同組彆的顯著差異,那麼誤差棒或箱綫圖將非常有效。 強調關鍵信息,弱化乾擾: 一次成功的可視化能夠引導讀者的注意力到最重要的信息上。我們將探討如何通過視覺層次、對比和留白來突齣核心發現,同時最小化不必要的細節,避免信息過載。這可能涉及到對圖錶的簡化、對重要數據點的強調(例如,用特殊的顔色或標記),以及對復雜圖錶的分解。 交互式可視化的力量: 在數字時代,交互式可視化正變得越來越重要。它允許用戶主動探索數據,發現他們自己的洞察。我們將探討如何設計和實現簡單的交互功能,如工具提示(tooltip)、聯動篩選(linked brushing)和縮放(zooming),讓觀眾能夠更深入地與數據互動,獲得更豐富的體驗。 數據驅動的敘事構建: 再次強調,數據可視化是講故事的有力工具。我們將學習如何將一係列經過分析和可視化的發現,按照邏輯順序組織起來,形成一個引人入勝的數據故事。這包括確定故事的起點、發展和高潮,以及如何用圖錶和文字來推動故事情節。一個好的數據故事不僅能傳遞信息,更能激發情感、引發思考,甚至促成行動。 評估與迭代: 數據的生命周期並非在一次可視化後就結束。本部分將引導讀者思考如何評估可視化和分析的有效性,並進行必要的迭代。我們會討論如何從反饋中學習,如何根據新的數據或新的問題來改進現有的分析和可視化方案。數據分析與可視化是一個持續優化的過程,通過不斷的反思和調整,纔能讓我們的工作更加精準和富有影響力。 總結 本書並非一本教你如何熟練使用特定軟件的速成指南,而是緻力於培養你一種用數據思考、用可視化錶達、用分析說話的能力。我們相信,掌握瞭這些核心的理念和方法,你將能夠更自信、更有效地駕馭數據,從中發掘齣深層的智慧,並以令人信服的方式與世界分享。無論你是一名初學者,還是希望提升數據素養的專業人士,這本書都將是你旅途中的一位得力夥伴,引領你領略數據分析與可視化藝術的無限魅力。