
自2007年推出以來,ggplot2已經成為世界上下載下傳最頻繁、應用最廣泛的R包之一。包括它的創造者Hadley Wickham在内,許多人将這一成就歸功于ggplot2背後的理念。這個包的靈感來自Leland Wilkinson關于資料可視化的開創性文章《圖形文法》(The Grammar of Graphics),這篇文章将圖形分解成刻度和層次等語義元件,并将資料從表示中分離出來。
如果你是世界上衆多ggplot2愛好者之一,你可能有時會發現自己正在尋找出色的軟體包來拓展其功能。幸運的是,在過去的10年裡,R社群一直緻力于建構ggplot2的拓展包。今天我們推薦了12個我們最喜歡的ggplot2拓展程式,以幫助你為你的ggplot2賦予更多的能量,增加更多的光彩——或者隻是為了更友善地建立圖表。
請繼續閱讀我們的文章。我們的文章包括大量的R Notebook,能夠讓你從浏覽器裡充分了解這些包。
1. gganimate
動态示範人均GDP随時間的變化
資料源自從GAPMPEDER資料(David Robinson)
喜歡你的gglot 可視化,但希望它有更多的運動部件?gganimate可以幫助你解決這個問題。像ggplot2處理x,y,顔色等一樣,這個包将“幀”(即動畫中的時間點)作為一個美學單元處理,進而使得ggplot2的可視化“活”起來。結果是一個從相同圖的不同幀中建構出來的動畫。
正如你在上面的例子中所看到的,gganimate畫出的圖的坐标軸範圍和圖例不變,隻有點在移動,這樣觀察者的注意力可以集中在資料如何随時間變化上。這也意味着,和動畫擴充包(你建立多個圖,并将它們組合起來)不同的是,gganimate隻需要建構圖一次,包括坐标軸和圖例。
gganimate還允許你将動畫儲存成檔案,如GIF,視訊或動态網頁,以便在RStudio和NoteBook之外使用。
建立者:David Robinson
了解更多:gganimate
2. gganimate
美國各州逮捕的聚類分析(Andrie de Vries)
如果你想控制聚類分析的外觀和展示,那就從ggdendro開始吧!雖然R确實有聚類功能,但它隻允許你直接繪制樹形圖,并不能分離出或顯露基礎資料。ggplot2的理念是緻力于将資料從表示中分離出來,以便更好地控制資料的顯示方式。
ggdendro提供了一個解決方案。它有幾個提取樹形圖資料的有用函數,是以你可以儲存或者操作資料本身。旋轉樹形圖,移除網格背景(如上例所示),反轉刻度,繪制三角形線段,建立DIANA和AGNES聚類圖,等等。将它和dendextend 、ape兩個包結合起來,就可以完全地控制你的樹形圖。
建立者:Andrie de Vries,可以在Mode上找到。
了解更多:ggdendro
可以在Mode上(https://modeanalytics.com/signin)試試ggdendro。
3. gganimate
Motor Trend汽車資料集,“Highcharts”主題(Asha Hill)
如果你想讓你的分析看上去可信,請看看ggthemes。這個多功能的庫包含的主題和刻度讓你可以直接複制資料可視化巨頭的報告的外觀。這些巨頭包括愛德華·塔夫特(Edward Tufte)、Fivethirtyeight、經濟學家、華爾街日報、Highcharts JS等。
甚至還包含了一些諷刺性的内容,例如Excel 2013主題,可以讓你複制“經典醜陋的外觀和感覺”(附注:“請永遠都不要使用”)。
建立者:Jeffrey B. Arnold,可以在Mode上找到。
學到更多:ggthemes
4. gganimate
具有比較p值的箱線圖(Alboukadel Kassambara)
ggplot2是靈活而強大的,但是對于那些沒有強大的R技能的人來說并非總是那麼友好。由于許多研究出版物需要R圖表,平常不使用R的研究人員經常需要根據需求生成高度定制的R圖表。這就是ggpubr存在的原因:使用ggpot2(即使你還不知道如何使用ggplot2)可以很容易地生成為出版物定制的圖表。
ggpubr 實際上是一個包裝器,它可以使用更直覺的文法幫助剛入門R的人生成複雜的圖。該包允許你向圖表添加p值和顯著性水準,并在同一頁中排列或注釋多個圖。它還可以輕松更改顔色和标簽等格式元素。
建立者:Alboukadel Kassambara
了解更多:ggpubr
5. gganimate
Motor Trend汽車資料的網格拼圖(Thomas Pedersen)
如何在同一個NoteBook中排列多個R圖?為了處理多變量資料,你可以使用Lattice等包。但是當你需要處理一些有關聯的圖時,patchwork是個更好的選擇。
這個名稱恰到好處的包提供了容易使用的數學運算符,用于在單個空間中組合和排列多個圖。為了将圖放在其他圖的旁邊,隻需要使用+運算符即可。為了将圖放在其他圖的頂部,隻需要将/用于垂直布局上。所有patchwork的運算符都可以組合成一個高度可讀的布局文法。
建立者:Thomas Pedersen
了解更多:patchwork
6. gganimate
鸢尾花資料集的山脊線圖,顔色顯示尾部分布機率(Claus O. Wilke)
山脊線圖是部分重疊的線圖,它的名字源于它與山脈存在相似之處。(Heyo Joy Division.)它們特别适用于可視化分布随時間、空間或其他連續變量的變化。
由于山脊線圖相對較新,ggplot2沒有建立它們的原始方式。ggridges 是為了填補這一空缺而建立的。該庫提供計算和繪制密度估計、沿x軸改變填充顔色以及計算和可視化不同分布統計資料(如添加分位數資訊)的方法。你還可以繪制原始資料點,有“雨雲”到“地毯式”多種選擇可供生成分布。
建立者:Claus O.Wilke,可以在Mode上找到。
了解更多:ggridges
7. gganimate
ggmap做出的休斯敦犯罪密度圖(David Kahle)
ggmap是一個功能強大的包,用于可視化空間資料和模型。他将資料置于從主流線上地圖(如谷歌地圖、OpenStreetMap和Stamen Maps)導出的靜态地圖之上。
ggmap 的優點在于,它使得ggplot2上的geoms可用于地圖可視化。這意味着你可以在地圖上建立等高線圖或散點圖,或者在多個地圖上建立分層資料。你可以在許多不同風格的谷歌地圖或者Stamen 地圖上建立ggplot可視化圖,從衛星圖和路線圖都可以——為你處理空間資料提供了最大的靈活性。
建立者:David Kahle
學到更多:ggmap
8. gganimate
比較geom_text()和geom_text_repel()處理後的标簽(Kamil Slowikowski)
ggrepel隻有一個非常有用的目的:讓ggplot2使用者更好地控制圖表中文本标簽的位置。正如每個R程式設計人員所知道的那樣,ggplot2處理文本标簽的預設方式有時不太理想。(看看上面左邊的圖表)
ggrepel通過為ggplot提供文本和标簽的位置資訊來解決這個問題,這将有助于避免各種難看的标簽。你可以将便簽設定為簡單地與其他标簽、資料點或者圖的邊界隔離開。或者,你可以選擇性地隐藏标簽,将它們限定在圖的某一區域中,或者調整它們以和邊界對齊。願(隔離的)力量與你同在。
建立者:Kamil Slowikowski
了解更多:ggrepel
9. gganimate
Motor Trend汽車資料集的圓形相關矩陣(Alboukadel Kassambara)
對于想要繪制相關矩陣的ggplot愛好者,ggcorrplot提供了一組優雅的選項。ggcorrplot的靈感來自corrplot包,但是被建構為需要和ggplot一起使用。這意味着,它有很多出色的功能讓你控制矩陣的外觀,從改變盒子的顔色、形狀或大小(如上面的圓點矩陣)到添加系數标簽,根據層次聚類重新排序矩陣等。
建立者:Alboukadel Kassambara,可以在Mode上找到。
了解更多:ggcorrplot
10. gganimate
Motor Trend汽車資料集的雷達圖(Ricardo Bion)
雷達圖提供了一種可視化多變量資料、發現模式的有用方法,以便于比較。ggradar旨在讓你使用圖形文法來建立這些圖表,也被稱作“蜘蛛網圖”或“起始圖”。
這個軟體包基于Paul Williamson的代碼,巧妙解決了這類圖的特殊繪制問題:将環形網格線還有點、雷達坐标之間的直線結合起來。這應該是你雷達上的一個包。(抱歉,我不後悔。)
建立者:Ricardo Bion
學到更多:ggradar
11. gganimate
美國航班模式,使用ggally将網絡置于地圖上(Amos Elberg)
ggally是ggplot的一個擴充程式,它彙集了一系列有用的額外的可視化功能。你可以使用ggally快速地在地圖上畫出模型的系數或者網絡,如上面的可視化圖所示。或許你需要重新排列你的資料來建構字形圖?你也可以用它。
建立者:Barret Schloerke,可以在Mode上找到。
了解更多:ggally
12. gganimate
使用ggiraph和patchwork繪制Motor Trend汽車資料集具有懸停效果的互動圖(David Gohel)
如果你想要為你的ggplot增加進階的互動或動畫,ggiraph就是你的夥伴。使用這個html部件,你可以擴充現有的ggplot2 條形圖,散點圖,箱型圖,地圖等等,以及執行諸如在懸停時顯示你選擇的提示,例如資料值和标簽,或者增加懸停動畫,如上面的圖表所示。
當使用者點選你圖表中的某一進制素時,你也可以利用ggiraph來執行特定的操作,比如打開一個新頁面。隻需要為動作指定一個JavaScript函數,ggiraph就可以完成其餘的操作。
原文釋出時間為:2018-08-19
本文作者:Asha Hill
本文來自雲栖社群合作夥伴“
資料分析”,了解相關資訊可以關注“
”。