12個ggplot2拓展程序助你強化R可視化
本文將為大家簡要介紹12個ggplot2拓展程序,包括它們讓R可視化更強大的原因以及相應(yīng)的具體示例。

自2007年推出以來,ggplot2已經(jīng)成為世界上下載最頻繁、應(yīng)用最廣泛的R包之一。包括它的創(chuàng)造者Hadley Wickham在內(nèi),許多人將這一成就歸功于ggplot2背后的理念。這個包的靈感來自Leland Wilkinson關(guān)于數(shù)據(jù)可視化的開創(chuàng)性文章《圖形語法》(The Grammar of Graphics),這篇文章將圖形分解成刻度和層次等語義組件,并將數(shù)據(jù)從表示中分離出來。
如果你是世界上眾多ggplot2愛好者之一,你可能有時會發(fā)現(xiàn)自己正在尋找出色的軟件包來拓展其功能。幸運的是,在過去的10年里,R社區(qū)一直致力于構(gòu)建ggplot2的拓展包。今天我們推薦了12個我們最喜歡的ggplot2拓展程序,以幫助你為你的ggplot2賦予更多的能量,增加更多的光彩——或者只是為了更方便地創(chuàng)建圖表。
1. gganimate

動態(tài)演示人均GDP隨時間的變化
數(shù)據(jù)源自從GAPMPEDER數(shù)據(jù)(David Robinson)
喜歡你的gglot 可視化,但希望它有更多的運動部件?gganimate可以幫助你解決這個問題。像ggplot2處理x,y,顏色等一樣,這個包將“幀”(即動畫中的時間點)作為一個美學(xué)單元處理,從而使得ggplot2的可視化“活”起來。結(jié)果是一個從相同圖的不同幀中構(gòu)建出來的動畫。
正如你在上面的例子中所看到的,gganimate畫出的圖的坐標(biāo)軸范圍和圖例不變,只有點在移動,這樣觀察者的注意力可以集中在數(shù)據(jù)如何隨時間變化上。這也意味著,和動畫擴展包(你創(chuàng)建多個圖,并將它們組合起來)不同的是,gganimate只需要構(gòu)建圖一次,包括坐標(biāo)軸和圖例。
gganimate還允許你將動畫保存成文件,如GIF,視頻或動態(tài)網(wǎng)頁,以便在RStudio和NoteBook之外使用。
創(chuàng)建者:David Robinson
2. gganimate

美國各州逮捕的聚類分析(Andrie de Vries)
如果你想控制聚類分析的外觀和展示,那就從ggdendro開始吧!雖然R確實有聚類功能,但它只允許你直接繪制樹形圖,并不能分離出或顯露基礎(chǔ)數(shù)據(jù)。ggplot2的理念是致力于將數(shù)據(jù)從表示中分離出來,以便更好地控制數(shù)據(jù)的顯示方式。
ggdendro提供了一個解決方案。它有幾個提取樹形圖數(shù)據(jù)的有用函數(shù),所以你可以保存或者操作數(shù)據(jù)本身。旋轉(zhuǎn)樹形圖,移除網(wǎng)格背景(如上例所示),反轉(zhuǎn)刻度,繪制三角形線段,創(chuàng)建DIANA和AGNES聚類圖,等等。將它和dendextend 、ape兩個包結(jié)合起來,就可以完全地控制你的樹形圖。
創(chuàng)建者:Andrie de Vries,可以在Mode上找到。
可以在Mode上(https://modeanalytics.com/signin)試試ggdendro。
3. gganimate

Motor Trend汽車數(shù)據(jù)集,“Highcharts”主題(Asha Hill)
如果你想讓你的分析看上去可信,請看看ggthemes。這個多功能的庫包含的主題和刻度讓你可以直接復(fù)制數(shù)據(jù)可視化巨頭的報告的外觀。這些巨頭包括愛德華·塔夫特(Edward Tufte)、Fivethirtyeight、經(jīng)濟學(xué)家、華爾街日報、Highcharts JS等。
甚至還包含了一些諷刺性的內(nèi)容,例如Excel 2013主題,可以讓你復(fù)制“經(jīng)典丑陋的外觀和感覺”(附注:“請永遠(yuǎn)都不要使用”)。
創(chuàng)建者:Jeffrey B. Arnold,可以在Mode上找到。
4. gganimate

具有比較p值的箱線圖(Alboukadel Kassambara)
ggplot2是靈活而強大的,但是對于那些沒有強大的R技能的人來說并非總是那么友好。由于許多研究出版物需要R圖表,平常不使用R的研究人員經(jīng)常需要根據(jù)需求生成高度定制的R圖表。這就是ggpubr存在的原因:使用ggpot2(即使你還不知道如何使用ggplot2)可以很容易地生成為出版物定制的圖表。
ggpubr 實際上是一個包裝器,它可以使用更直觀的語法幫助剛?cè)腴TR的人生成復(fù)雜的圖。該包允許你向圖表添加p值和顯著性水平,并在同一頁中排列或注釋多個圖。它還可以輕松更改顏色和標(biāo)簽等格式元素。
創(chuàng)建者:Alboukadel Kassambara
5. gganimate

Motor Trend汽車數(shù)據(jù)的網(wǎng)格拼圖(Thomas Pedersen)
如何在同一個NoteBook中排列多個R圖?為了處理多變量數(shù)據(jù),你可以使用Lattice等包。但是當(dāng)你需要處理一些有關(guān)聯(lián)的圖時,patchwork是個更好的選擇。
這個名稱恰到好處的包提供了容易使用的數(shù)學(xué)運算符,用于在單個空間中組合和排列多個圖。為了將圖放在其他圖的旁邊,只需要使用+運算符即可。為了將圖放在其他圖的頂部,只需要將/用于垂直布局上。所有patchwork的運算符都可以組合成一個高度可讀的布局語法。
創(chuàng)建者:Thomas Pedersen
6. gganimate

鳶尾花數(shù)據(jù)集的山脊線圖,顏色顯示尾部分布概率(Claus O. Wilke)
山脊線圖是部分重疊的線圖,它的名字源于它與山脈存在相似之處。(Heyo Joy Division.)它們特別適用于可視化分布隨時間、空間或其他連續(xù)變量的變化。
由于山脊線圖相對較新,ggplot2沒有創(chuàng)建它們的原始方式。ggridges 是為了填補這一空缺而創(chuàng)建的。該庫提供計算和繪制密度估計、沿x軸改變填充顏色以及計算和可視化不同分布統(tǒng)計數(shù)據(jù)(如添加分位數(shù)信息)的方法。你還可以繪制原始數(shù)據(jù)點,有“雨云”到“地毯式”多種選擇可供生成分布。
創(chuàng)建者:Claus O.Wilke,可以在Mode上找到。
7. gganimate

ggmap做出的休斯敦犯罪密度圖(David Kahle)
ggmap是一個功能強大的包,用于可視化空間數(shù)據(jù)和模型。他將數(shù)據(jù)置于從主流在線地圖(如谷歌地圖、OpenStreetMap和Stamen Maps)導(dǎo)出的靜態(tài)地圖之上。
ggmap 的優(yōu)點在于,它使得ggplot2上的geoms可用于地圖可視化。這意味著你可以在地圖上創(chuàng)建等高線圖或散點圖,或者在多個地圖上創(chuàng)建分層數(shù)據(jù)。你可以在許多不同風(fēng)格的谷歌地圖或者Stamen 地圖上創(chuàng)建ggplot可視化圖,從衛(wèi)星圖和路線圖都可以——為你處理空間數(shù)據(jù)提供了***的靈活性。
創(chuàng)建者:David Kahle
8. gganimate

比較geom_text()和geom_text_repel()處理后的標(biāo)簽(Kamil Slowikowski)
ggrepel只有一個非常有用的目的:讓ggplot2用戶更好地控制圖表中文本標(biāo)簽的位置。正如每個R編程人員所知道的那樣,ggplot2處理文本標(biāo)簽的默認(rèn)方式有時不太理想。(看看上面左邊的圖表)
ggrepel通過為ggplot提供文本和標(biāo)簽的位置信息來解決這個問題,這將有助于避免各種難看的標(biāo)簽。你可以將便簽設(shè)置為簡單地與其他標(biāo)簽、數(shù)據(jù)點或者圖的邊界隔離開?;蛘?,你可以選擇性地隱藏標(biāo)簽,將它們限定在圖的某一區(qū)域中,或者調(diào)整它們以和邊界對齊。愿(隔離的)力量與你同在。
創(chuàng)建者:Kamil Slowikowski
9. gganimate

Motor Trend汽車數(shù)據(jù)集的圓形相關(guān)矩陣(Alboukadel Kassambara)
對于想要繪制相關(guān)矩陣的ggplot愛好者,ggcorrplot提供了一組優(yōu)雅的選項。ggcorrplot的靈感來自corrplot包,但是被構(gòu)建為需要和ggplot一起使用。這意味著,它有很多出色的功能讓你控制矩陣的外觀,從改變盒子的顏色、形狀或大小(如上面的圓點矩陣)到添加系數(shù)標(biāo)簽,根據(jù)層次聚類重新排序矩陣等。
創(chuàng)建者:Alboukadel Kassambara,可以在Mode上找到。
10. gganimate

Motor Trend汽車數(shù)據(jù)集的雷達(dá)圖(Ricardo Bion)
雷達(dá)圖提供了一種可視化多變量數(shù)據(jù)、發(fā)現(xiàn)模式的有用方法,以便于比較。ggradar旨在讓你使用圖形語法來創(chuàng)建這些圖表,也被稱作“蜘蛛網(wǎng)圖”或“起始圖”。
這個軟件包基于Paul Williamson的代碼,巧妙解決了這類圖的特殊繪制問題:將環(huán)形網(wǎng)格線還有點、雷達(dá)坐標(biāo)之間的直線結(jié)合起來。這應(yīng)該是你雷達(dá)上的一個包。(抱歉,我不后悔。)
創(chuàng)建者:Ricardo Bion
11. gganimate

美國航班模式,使用ggally將網(wǎng)絡(luò)置于地圖上(Amos Elberg)
ggally是ggplot的一個擴展程序,它匯集了一系列有用的額外的可視化功能。你可以使用ggally快速地在地圖上畫出模型的系數(shù)或者網(wǎng)絡(luò),如上面的可視化圖所示?;蛟S你需要重新排列你的數(shù)據(jù)來構(gòu)建字形圖?你也可以用它。
創(chuàng)建者:Barret Schloerke,可以在Mode上找到。
12. gganimate

使用ggiraph和patchwork繪制Motor Trend汽車數(shù)據(jù)集具有懸停效果的交互圖(David Gohel)
如果你想要為你的ggplot增加高級的交互或動畫,ggiraph就是你的伙伴。使用這個html部件,你可以擴展現(xiàn)有的ggplot2 條形圖,散點圖,箱型圖,地圖等等,以及執(zhí)行諸如在懸停時顯示你選擇的提示,例如數(shù)據(jù)值和標(biāo)簽,或者增加懸停動畫,如上面的圖表所示。
當(dāng)用戶點擊你圖表中的某一元素時,你也可以利用ggiraph來執(zhí)行特定的操作,比如打開一個新頁面。只需要為動作指定一個Java函數(shù),ggiraph就可以完成其余的操作。
創(chuàng)建者:David Gohel