
ggplot2是R語言最為強大的作圖軟件包,強于其自成一派的數據可視化理念。當熟悉了ggplot2的基本套路后,數據可視化工作將變得非常輕松而有條理。
本文主要對ggplot2的可視化理念及開發套路做一個總體介紹,具體繪圖方法(如折線圖,柱狀圖,箱線圖等)將在后面的文章中分別進行講解。
核心理念
1. 將數據,數據相關繪圖,數據無關繪圖分離
這點可以說是ggplot2最為吸引人的一點。眾所周知,數據可視化就是將我們從數據中探索的信息與圖形要素對應起來的過程。
ggplot2將數據,數據到圖形要素的映射,以及和數據無關的圖形要素繪制分離,有點類似java的MVC框架思想。這讓ggplot2的使用者能清楚分明的感受到一張數據分析圖真正的組成部分,有針對性的進行開發,調整。
2. 圖層式的開發邏輯
在ggplot2中,圖形的繪制是一個個圖層添加上去的。舉個例子來說,我們首先決定探索一下身高與體重之間的關系;然后畫了一個簡單的散點圖;然后決定最好區分性別,圖中點的色彩對應于不同的性別;然后決定最好區分地區,拆成東中西三幅小圖;最后決定加入回歸直線,直觀地看出趨勢。這是一個層層推進的結構過程,在每一個推進中,都有額外的信息被加入進來。在使用ggplot2的過程中,上述的每一步都是一個圖層,并能夠疊加到上一步并可視化展示出來。
3. 各種圖形要素的自由組合
由于ggplot2的圖層式開發邏輯,我們可以自由組合各種圖形要素,充分自由發揮想象力。
基本開發步驟
1. 初始化 – ggplot()
這一步需要設定的是圖的x軸,y軸和”美學特征”?;拘问饺缦拢?/span>
1
p <- ggplot(data = , aes(x = , y = ))
這一步里,設置x軸和設置y軸很好理解。那么”美學特征”又是什么呢?
舉個例子來說,下面這張散點圖里,x軸表示年齡,y軸表示身高,很好理解:
但這張圖除了展示年齡和身高的關系,還展示出每個樣本點的體重:顏色越深表示體重越大。因此體重信息和年齡身高一樣,也需要綁定到一個具體的列。這一列就是散點圖中的”美學特征”。
來看看R語言繪制代碼:
1
ggplot(heightweight, aes(x=ageYear, y=heightIn, colour=weightLb))+geom_point()
其中的colour參數就是該圖的”美學特征”。
再比如,下面這張柱狀圖中,x軸表示日期,y軸表示權重,很好理解:
但這張圖中每個日期對應了兩個不同的權重并采用兩個柱狀來對比,那么這個劃分依據也是另一個“美學特征”。
再看看繪制代碼:
1
ggplot(cabbage_exp, aes(x=Date, y=Weight, fill=Cultivar))+geom_bar(position="dodge", stat="identity")
其中的fill參數就是該圖的”美學特征”。
綜上所述,圖中的每個樣本點除了通過它的坐標位置,還可以以其他形式展示信息,比如大小,色深,分組等。而這些新形式需要綁定的列,便叫做”美學特征”。
“美學特征”的形式和x,y軸一樣是以列的形式給出,且列中元素個數和x,y軸列必然相等。它的設置也和x,y軸一樣在ggplot()函數的aes參數括號內進行。
2. 繪制圖層 – geom_bar()/geom_line()等等
上一步的主要工作是為數據可視化配置好了數據,接下來便可根據業務的需要來繪制不同的圖,如折線圖/柱狀圖/散點圖等等。具體的實現方法在后面的章節中會細致講解,這里重點提一下繪圖函數里的stat參數。這個參數是對沖突樣本點做統計,該參數默認為identity,表示保留樣本點原(y)值,還可以是sum,表示對出現在這點的(y)值進行求和等等。
3. 調整數據相關圖形元素 – scale系列函數、某些專有函數
在ggplot2中,scale標尺機制專門負責完成數據到圖像元素的映射。也許你會問,”美學特征”不是已經定義好了這個映射嗎?然而事實是”美學特征”只是選定了映射前的數據,并沒有說明具體映射到什么圖形元素。
舉個例子,假如某張表記錄了不同種類水池的長,寬,深信息?,F在需要繪制不同種類下水池長和寬關系的柱狀圖,那么初始化完成的是這個映射:
而scale函數完成的是這個映射:
顯然a映射為了紅色,b映射為了藍色。
也許你還會問,我的代碼不用scale,那么映射是如何完成的呢?答曰系統有默認映射的,就像繪圖函數都有默認參數stat=identity這樣。
4. 調整數據無關圖形元素 – theme()、某些專有函數
這部分包括設置圖片標題格式,文字字體這類和數據本身無關的圖像元素。只需調用theme()函數或者某些專有函數(如annovate函數可為圖片添加注釋)便可實現。
一個圖層繪制好后便可觀察調整,然后開始下一個圖層的制作,直到整幅圖繪制完畢。
小結
本文作為該系列的開篇,從總體、抽象的角度介紹了R語言的數據可視化包ggplot2。讀者如果覺得有些概念抽象難以理解,不必糾結,待看完該系列其他文章后再回過頭來看本文,相信會有新的收獲。
接下來的文章將從具體、細致的角度講解如何使用R語言的ggplot2軟件包進行各種數據可視化。
最后,欣賞一些使用ggplot2制作的成品圖吧:
[譯]R語言突破大數據瓶頸:Shiny的Spark之旅
基于R語言的梯度推進算法介紹
用R語言抓取pm2.5數據繪制全國pm2.5分布圖
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25