ggplot2:數(shù)據(jù)分析與圖形藝術(shù)
定 價(jià):46 元
- 作者:(美)威克姆 著,統(tǒng)計(jì)之都 譯
- 出版時(shí)間:2013/5/1
- ISBN:9787560549699
- 出 版 社:西安交通大學(xué)出版社
- 中圖法分類:C819
- 頁(yè)碼:231
- 紙張:膠版紙
- 版次:1
- 開本:16開
ggplot2 是R中新穎的數(shù)據(jù)可視化包,功能強(qiáng)大、靈活便捷,其靈感源自 LelandWilkison的《圖形的語法》一書。使用 ggplot2 可以輕松實(shí)現(xiàn):
高質(zhì)量圖形的繪制,自動(dòng)化添加圖例。
疊加來自不同數(shù)據(jù)源的多個(gè)圖層(點(diǎn)、線、地圖、瓦片圖、箱線圖等),自適應(yīng)通用標(biāo)度。
利用 R 強(qiáng)大的建模功能添加平滑曲線,如 loess 、線性模型、廣義可加模型和穩(wěn)健回歸。
保存任意ggplot2 圖形,方便修改或重復(fù)使用。
制作主題,滿足內(nèi)部定制或雜志風(fēng)格的需求,便捷地應(yīng)用到多幅圖形上。
從視覺角度上審視你的圖形,斟酌每一部分?jǐn)?shù)據(jù)如何呈現(xiàn)在最終圖形上。
如果你想將枯燥的數(shù)據(jù)轉(zhuǎn)化為生動(dòng)、形象的圖片,本書絕對(duì)大有裨益。你需要了解 R的基本知識(shí)(比如如何將數(shù)據(jù)導(dǎo)入到R),不過 ggplot2是專門為繪圖量身打造的“迷你語言”,在本書中你就可以學(xué)到你需要的所有知識(shí)。在閱讀完本書之后,你就可以針對(duì)你的問題繪制出精確定制的圖形,并且發(fā)現(xiàn)將腦海中的圖片繪制在屏幕上已經(jīng)變得輕而易舉了。譯者親切地稱之為“玩轉(zhuǎn)數(shù)據(jù)可視化的瑞士軍刀!”
每當(dāng)我們看到一個(gè)新的軟件,第一反應(yīng)會(huì)是:為什么又要發(fā)明一個(gè)新軟件?ggplot2是R世界里相對(duì)還比較年輕的一個(gè)包,在它之前,官方R已經(jīng)有自己的基礎(chǔ)圖形系統(tǒng)(graphics包) 和網(wǎng)格圖形系統(tǒng)(grid 包),并且Deepayan Sarkar也開發(fā)了lattice包,看起來R的世界對(duì)圖形的支持已經(jīng)足夠強(qiáng)大了。那么我們不禁要問,為什么還要發(fā)明一套新的系統(tǒng)? 設(shè)計(jì)理念 打個(gè)比方,想想我們小時(shí)候怎樣學(xué)中文的。最開始的時(shí)候我們要識(shí)字,不認(rèn)識(shí)字就沒法閱讀和寫作,但我們并不是一直按照一個(gè)個(gè)漢字學(xué)習(xí)的,而是通過句子和具體的場(chǎng)景故事學(xué)習(xí)的。為什么不在小學(xué)時(shí)背六年字典呢?那樣可能認(rèn)識(shí)所有的漢字。原因很簡(jiǎn)單,光有單字,我們不會(huì)說話,也無法閱讀和寫作。我們?nèi)钡氖鞘裁矗看鸢甘菍?duì)文字的組織能力,或者說語法。 R的基礎(chǔ)圖形系統(tǒng)基本上是一個(gè)“紙筆模型”,即:一塊畫布擺在面前,你可以在這里畫幾個(gè)點(diǎn),在那里畫幾條線,指哪兒畫哪兒。后來lattice包的出現(xiàn)稍微改善了這種情況,你可以說,我要畫散點(diǎn)圖或直方圖,并且按照某個(gè)分類變量給圖中的元素上色,此時(shí)數(shù)據(jù)才在畫圖中扮演了一定的中心角色,我們不用去想具體這個(gè)點(diǎn)要用什么顏色(顏色會(huì)根據(jù)變量自動(dòng)生成)。然而,lattice繼承了R 語言的一個(gè)糟糕特征,就是參數(shù)設(shè)置鋪天蓋地,足以讓人窒息,光是一份xyplot()函數(shù)的幫助文檔,恐怕就夠我們消磨一天時(shí)間了,更重要的是,lattice仍然面向特定的統(tǒng)計(jì)圖形,像基礎(chǔ)圖形系統(tǒng)一樣,有直方圖、箱線圖、條形圖等等,它沒有一套可以讓數(shù)據(jù)分析者說話的語法! ∧敲磾(shù)據(jù)分析者是怎樣說話的呢?他們從來不會(huì)說這條線用#FE09BE顏色,那個(gè)點(diǎn)用三角形狀,他們只會(huì)說,把圖中的線用數(shù)據(jù)中的職業(yè)類型變量上色,或圖中點(diǎn)的形狀對(duì)應(yīng)性別變量。有時(shí)候他們畫了一幅散點(diǎn)圖,但馬上他們發(fā)現(xiàn)這幅圖太擁擠,最好是能具體看一下里面不同收入階層的特征,所以他們會(huì)說,把這幅圖拆成七幅小圖,每幅圖對(duì)應(yīng)一個(gè)收入階層。然后發(fā)現(xiàn)散點(diǎn)圖的趨勢(shì)不明顯,最好加上回歸直線,看看回歸模型反映的趨勢(shì)是什么,或者發(fā)現(xiàn)圖中離群點(diǎn)太多,最好做一下對(duì)數(shù)變換,減少大數(shù)值對(duì)圖形的主導(dǎo)性! 氖贾两K,數(shù)據(jù)分析者都在數(shù)據(jù)層面上思考問題,而不是拿著水彩筆和調(diào)色板在那里一筆一劃作圖,而計(jì)算機(jī)程序員則傾向于畫點(diǎn)畫線。LelandWilkinson的著作在理論 每當(dāng)我們看到一個(gè)新的軟件,第一反應(yīng)會(huì)是:為什么又要發(fā)明一個(gè)新軟件?ggplot2是R世界里相對(duì)還比較年輕的一個(gè)包,在它之前,官方R已經(jīng)有自己的基礎(chǔ)圖形系統(tǒng)(graphics包) 和網(wǎng)格圖形系統(tǒng)(grid 包),并且Deepayan Sarkar也開發(fā)了lattice包,看起來R的世界對(duì)圖形的支持已經(jīng)足夠強(qiáng)大了。那么我們不禁要問,為什么還要發(fā)明一套新的系統(tǒng)? 設(shè)計(jì)理念 打個(gè)比方,想想我們小時(shí)候怎樣學(xué)中文的。最開始的時(shí)候我們要識(shí)字,不認(rèn)識(shí)字就沒法閱讀和寫作,但我們并不是一直按照一個(gè)個(gè)漢字學(xué)習(xí)的,而是通過句子和具體的場(chǎng)景故事學(xué)習(xí)的。為什么不在小學(xué)時(shí)背六年字典呢?那樣可能認(rèn)識(shí)所有的漢字。原因很簡(jiǎn)單,光有單字,我們不會(huì)說話,也無法閱讀和寫作。我們?nèi)钡氖鞘裁矗看鸢甘菍?duì)文字的組織能力,或者說語法! 的基礎(chǔ)圖形系統(tǒng)基本上是一個(gè)“紙筆模型”,即:一塊畫布擺在面前,你可以在這里畫幾個(gè)點(diǎn),在那里畫幾條線,指哪兒畫哪兒。后來lattice包的出現(xiàn)稍微改善了這種情況,你可以說,我要畫散點(diǎn)圖或直方圖,并且按照某個(gè)分類變量給圖中的元素上色,此時(shí)數(shù)據(jù)才在畫圖中扮演了一定的中心角色,我們不用去想具體這個(gè)點(diǎn)要用什么顏色(顏色會(huì)根據(jù)變量自動(dòng)生成)。然而,lattice繼承了R 語言的一個(gè)糟糕特征,就是參數(shù)設(shè)置鋪天蓋地,足以讓人窒息,光是一份xyplot()函數(shù)的幫助文檔,恐怕就夠我們消磨一天時(shí)間了,更重要的是,lattice仍然面向特定的統(tǒng)計(jì)圖形,像基礎(chǔ)圖形系統(tǒng)一樣,有直方圖、箱線圖、條形圖等等,它沒有一套可以讓數(shù)據(jù)分析者說話的語法! ∧敲磾(shù)據(jù)分析者是怎樣說話的呢?他們從來不會(huì)說這條線用#FE09BE顏色,那個(gè)點(diǎn)用三角形狀,他們只會(huì)說,把圖中的線用數(shù)據(jù)中的職業(yè)類型變量上色,或圖中點(diǎn)的形狀對(duì)應(yīng)性別變量。有時(shí)候他們畫了一幅散點(diǎn)圖,但馬上他們發(fā)現(xiàn)這幅圖太擁擠,最好是能具體看一下里面不同收入階層的特征,所以他們會(huì)說,把這幅圖拆成七幅小圖,每幅圖對(duì)應(yīng)一個(gè)收入階層。然后發(fā)現(xiàn)散點(diǎn)圖的趨勢(shì)不明顯,最好加上回歸直線,看看回歸模型反映的趨勢(shì)是什么,或者發(fā)現(xiàn)圖中離群點(diǎn)太多,最好做一下對(duì)數(shù)變換,減少大數(shù)值對(duì)圖形的主導(dǎo)性! 氖贾两K,數(shù)據(jù)分析者都在數(shù)據(jù)層面上思考問題,而不是拿著水彩筆和調(diào)色板在那里一筆一劃作圖,而計(jì)算機(jī)程序員則傾向于畫點(diǎn)畫線。LelandWilkinson的著作在理論上改善了這種狀況,他提出了一套圖形語法,讓我們?cè)诳紤]如何構(gòu)建一幅圖形的時(shí)候不再陷在具體的圖形元素里面,而是把圖形拆分為一些互相獨(dú)立并且可以自由組合的成分。這套語法提出來之后他自己也做了一套軟件,但顯然這套軟件沒有被廣泛采用;幸運(yùn)的是,HadleyWickham 在R語言中把這套想法巧妙地實(shí)現(xiàn)了! 榱苏f明這種語法的思想,我們考慮圖形中的一個(gè)成分:坐標(biāo)系。常見的坐標(biāo)系有兩種:笛卡爾坐標(biāo)系和極坐標(biāo)系。在語法中,它們屬于一個(gè)成分,可自由拆卸替換。笛卡爾坐標(biāo)系下的條形圖實(shí)際上可以對(duì)應(yīng)極坐標(biāo)系下的餅圖,因?yàn)闂l形圖的高可以對(duì)應(yīng)餅圖的角度,本質(zhì)上沒什么區(qū)別。因此在ggplot2中,從一幅條形圖過渡到餅圖,只需要加極少量的代碼,把坐標(biāo)系換一下就可以了。如果我們用紙筆模型,則可以想象,這完全是不同的兩幅圖,一幅圖里面要畫的是矩形,另一幅圖要畫扇形。
HadleyWickham,RStudio首席科學(xué)家,美國(guó)萊斯大學(xué)統(tǒng)計(jì)學(xué)助理教授,畢業(yè)于愛荷華州立大學(xué)統(tǒng)計(jì)系。Hadley是R社區(qū)最活躍的人之一,代碼風(fēng)格獨(dú)樹一幟,致力于開發(fā)用于數(shù)據(jù)處理、分析、成像的工具,截至2012年已經(jīng)開發(fā)了超過30個(gè)高質(zhì)量的R軟件包,比如ggplot2,lubridate,plyr, reshape2, stringr, httr等。
1. 簡(jiǎn)介
2.從qplot開始入門
3. 語法突破
4. 用圖層構(gòu)建圖像
5. 工具箱
6. 標(biāo)度、坐標(biāo)軸和圖例
7.定位
8. 精雕細(xì)琢
9. 數(shù)據(jù)操作
10. 減少重復(fù)性工作
附錄A 不同語法間的轉(zhuǎn)換
附錄B 圖形屬性的定義
附錄C 用grid操作圖形
每當(dāng)我們看到一個(gè)新的軟件,第一反應(yīng)會(huì)是:為什么又要發(fā)明一個(gè)新軟件?ggplot2是R世界里相對(duì)還比較年輕的一個(gè)包,在它之前,官方R已經(jīng)有自己的基礎(chǔ)圖形系統(tǒng)(graphics包) 和網(wǎng)格圖形系統(tǒng)(grid 包),并且Deepayan Sarkar也開發(fā)了lattice包,看起來R的世界對(duì)圖形的支持已經(jīng)足夠強(qiáng)大了。那么我們不禁要問,為什么還要發(fā)明一套新的系統(tǒng)?
設(shè)計(jì)理念
打個(gè)比方,想想我們小時(shí)候怎樣學(xué)中文的。最開始的時(shí)候我們要識(shí)字,不認(rèn)識(shí)字就沒法閱讀和寫作,但我們并不是一直按照一個(gè)個(gè)漢字學(xué)習(xí)的,而是通過句子和具體的場(chǎng)景故事學(xué)習(xí)的。為什么不在小學(xué)時(shí)背六年字典呢?那樣可能認(rèn)識(shí)所有的漢字。原因很簡(jiǎn)單,光有單字,我們不會(huì)說話,也無法閱讀和寫作。我們?nèi)钡氖鞘裁?答案是?duì)文字的組織能力,或者說語法。
R的基礎(chǔ)圖形系統(tǒng)基本上是一個(gè)“紙筆模型”,即:一塊畫布擺在面前,你可以在這里畫幾個(gè)點(diǎn),在那里畫幾條線,指哪兒畫哪兒。后來lattice包的出現(xiàn)稍微改善了這種情況,你可以說,我要畫散點(diǎn)圖或直方圖,并且按照某個(gè)分類變量給圖中的元素上色,此時(shí)數(shù)據(jù)才在畫圖中扮演了一定的中心角色,我們不用去想具體這個(gè)點(diǎn)要用什么顏色(顏色會(huì)根據(jù)變量自動(dòng)生成)。然而,lattice繼承了R 語言的一個(gè)糟糕特征,就是參數(shù)設(shè)置鋪天蓋地,足以讓人窒息,光是一份xyplot()函數(shù)的幫助文檔,恐怕就夠我們消磨一天時(shí)間了,更重要的是,lattice仍然面向特定的統(tǒng)計(jì)圖形,像基礎(chǔ)圖形系統(tǒng)一樣,有直方圖、箱線圖、條形圖等等,它沒有一套可以讓數(shù)據(jù)分析者說話的語法。
那么數(shù)據(jù)分析者是怎樣說話的呢?他們從來不會(huì)說這條線用#FE09BE顏色,那個(gè)點(diǎn)用三角形狀,他們只會(huì)說,把圖中的線用數(shù)據(jù)中的職業(yè)類型變量上色,或圖中點(diǎn)的形狀對(duì)應(yīng)性別變量。有時(shí)候他們畫了一幅散點(diǎn)圖,但馬上他們發(fā)現(xiàn)這幅圖太擁擠,最好是能具體看一下里面不同收入階層的特征,所以他們會(huì)說,把這幅圖拆成七幅小圖,每幅圖對(duì)應(yīng)一個(gè)收入階層。然后發(fā)現(xiàn)散點(diǎn)圖的趨勢(shì)不明顯,最好加上回歸直線,看看回歸模型反映的趨勢(shì)是什么,或者發(fā)現(xiàn)圖中離群點(diǎn)太多,最好做一下對(duì)數(shù)變換,減少大數(shù)值對(duì)圖形的主導(dǎo)性。
從始至終,數(shù)據(jù)分析者都在數(shù)據(jù)層面上思考問題,而不是拿著水彩筆和調(diào)色板在那里一筆一劃作圖,而計(jì)算機(jī)程序員則傾向于畫點(diǎn)畫線。LelandWilkinson的著作在理論上改善了這種狀況,他提出了一套圖形語法,讓我們?cè)诳紤]如何構(gòu)建一幅圖形的時(shí)候不再陷在具體的圖形元素里面,而是把圖形拆分為一些互相獨(dú)立并且可以自由組合的成分。這套語法提出來之后他自己也做了一套軟件,但顯然這套軟件沒有被廣泛采用;幸運(yùn)的是,HadleyWickham 在R語言中把這套想法巧妙地實(shí)現(xiàn)了。
為了說明這種語法的思想,我們考慮圖形中的一個(gè)成分:坐標(biāo)系。常見的坐標(biāo)系有兩種:笛卡爾坐標(biāo)系和極坐標(biāo)系。在語法中,它們屬于一個(gè)成分,可自由拆卸替換。笛卡爾坐標(biāo)系下的條形圖實(shí)際上可以對(duì)應(yīng)極坐標(biāo)系下的餅圖,因?yàn)闂l形圖的高可以對(duì)應(yīng)餅圖的角度,本質(zhì)上沒什么區(qū)別。因此在ggplot2中,從一幅條形圖過渡到餅圖,只需要加極少量的代碼,把坐標(biāo)系換一下就可以了。如果我們用紙筆模型,則可以想象,這完全是不同的兩幅圖,一幅圖里面要畫的是矩形,另一幅圖要畫扇形。
更多的細(xì)節(jié)在本書中會(huì)介紹,這里我們只是簡(jiǎn)略說明用語法畫圖對(duì)用紙筆畫圖來說在思維上的優(yōu)越性;前者是說話,后者是說字。
……