【資料科學筆記】第四章 資料可視化
文章目錄
- 【資料科學筆記】第四章 資料可視化
- 前言
- 4.1 高階繪圖工具————ggplot2
- 4.1.1 快速繪圖
- 4.1.2 使用圖層構建影像
- 4.1.3 分面
- 總結
前言
博客已上傳為PDF資源,系統沒辦法直接開源,只有關注帥氣的不二程式猿才能下載,(不想關注可以私信或評論,備注資源名稱可以獲取)🆓資源鏈接 (PDF格式):【資料科學筆記】第四章 資料可視化.pdf 983KB
🆓資源鏈接 (HTML格式):【資料科學筆記】第四章 資料可視化rstudio.html 1.68MB
資料可視化是指將結構的或非結構的資料轉換成適當的可視化圖表,可視化能夠將資料更加直接的方式展示出來,使得資料從客觀更有說服力,
R語言有自己的基礎圖形系統,如 graphics 包、 grid 包或者 lattice 包,相比于R語言自帶的基礎作圖函式,如plot()能表現出更加豐富化、 多樣化,
4.1 高階繪圖工具————ggplot2
ggplot2 包是一個有著一套完整圖形語法支持的軟體包,該繪圖包的特點在于定義各種底層組件來合成復雜的圖形,而不是直接定義的圖形,
通常 ggplot2 生成圖形的必須步驟如下:
- 定義和出土資料,采用 ggplot2 生成一個空的繪圖物件,
- 確定圖形形狀,
- 采用
aes()函式指定用來表示資料值的形狀特征,
4.1.1 快速繪圖
ggplot2 中的函式
qplot()和傳統繪圖中的plot()功能類似,
(一)散點圖
基本的散點圖繪制可以用 qplot() ,
library(ggplot2)
data(mpg)
# qplot(displ , cty , data = mpg)
# qplot(displ, cty, data = mpg, colour=class)
# qplot(displ,cty, data = mpg,shape= fl)
qplot( displ , cty , data = mpg , colour = class , shape = fl )
mpg資料集,發動機排量(升)和每加侖英里數的散點圖
(二)條形圖和箱線圖
對于離散型變數,頻數一般使用條形圖來繪制,這里直接使用
geom = 'bar'即可,
例如,汽車氣缸數目的條形圖:
qplot(cyl , data = mpg , geom = 'bar')
汽車氣缸數目的條形圖
如果想要描述持續變數在不同類別下的變化情況可以使用箱線圖,只需要設定引數
geom = 'boxplot',
qplot(as.factor(cyl), displ, data = mpg, geom = 'boxplot')

不同氣缸數目下發動機排量箱線圖
對于連續型資料,我們最常見的是直方圖和密度曲線圖,只需要修改引數
geom = 'histogram和geom = 'density'在此不做舉例說明,
(三)時間序列圖
對于時間序列的資料所繪制的圖形稱為線條圖, 它只通過添加引數
geom = 'line',
# 使用economics 資料集繪制一個關于個人存盤的時間序列圖
qplot (date , psavert , data = economics , geom = 'line')

4.1.2 使用圖層構建影像
上面介紹了使用
qplot()函式繪制基礎圖形, 但是qplot()有它的局限性,因為它只能使用一個資料集和一組圖形屬性映射,可以使用圖層來解決這個問題,每個圖層都可以有自己的資料集和圖形屬性映射,附加的資料元素可以通過圖層添加到圖形中,
一個圖層由五個部分組成:
(1)資料,必須是一個資料框 (dataframe) ,在繪圖結束后可以修改,
(2)圖形屬性映射,設定資料集中變數如何映射到改圖層的影像屬性,
(3)幾何物件,指定使用那種幾何來繪圖,
(4)統計變換,對原資料做一些有用的統計變換,
(5)位置調整,通過調整元素位置避免影像重合,
主要講解前三個部分
(一) 資料
ggplot2 對于資料集的邀請是必須是一個資料框, ggplot2 會從我們指定的資料框中提取繪圖所需變數,生成新的資料集,用 mpg 資料集為例,
(二) 圖形屬性映射
1. 創建繪圖物件
當我們呼叫 ggplot2 函式時,可以手動創建圖層物件,主需將圖層屬性和變數放到 aes() 函式的括號里,
# 設定了默認映射, 但這個圖層未添加圖層,
p <- ggplot ( mpg , aes ( displ , cty , colour = class ) )
2. 圖形屬性
aes() 函式用來將資料變數映射到圖形中,在上面例子中 aes ( displ , cty , colour = class ) 將 x 坐標映射到 displ , y 坐標映射到 cty, colour 映射到class ,這和 qplot() 用法一致,
3. 圖和圖層
默認的圖層屬性映射可以在圖形物件初始化的時候設定,后可以通過 + 進行修改,
>>>p <- ggplot( mpg )
>>>summary( p )
data: manufacturer, model, displ, year, cyl, trans, drv, cty,
hwy, fl, class [234x11]
>>>p <- p + aes ( displ , hwy )
>>>summary( p )
data: manufacturer, model, displ, year, cyl, trans, drv, cty,
hwy, fl, class [234x11]
mapping: x = ~displ, y = ~hwy
faceting: <ggproto object: Class FacetNull, Facet, gg>
4. 設定和映射
我們還可以在圖層引數里設定一個單一值, 如 colour = 'green' , 下面舉例用圖層里的 colour 引數設定顏色,
p <- ggplot( mpg , aes(displ, hwy))
p + geom_point( colour = 'green')

這里將 colour 映射到 green ,實際上首先創建了只有green 字符的變數,然后將colour 映射到新的變數上, 因為這個新變數的值是離散的,所以默認的顏色標度將使用色輪上等距的顏色,并且此處新變數就一個值,因此這個顏色就是桃紅色,
p + geom_point( aes(colour = 'green'))

(三) 幾何物件
幾何圖形物件( 簡稱geom ),它決定了生成的影像型別,
有些幾何物件主要在它們引數化的方式上有所不同,例如,矩陣幾何物件( rect geom ), 設定的是它的上( ymax )、 下( ymin )、 左( xmin )、 右( xmax )位置,
下面列出部分常用幾何物件的圖形屬性,
| 幾何物件 | 描述 | 圖形屬性 |
|---|---|---|
| geom_point() | 數值符號 | x , y , sahpe , file |
| geom_line() | 直線(按x排序) | x , y , linetype |
| geom_path() | 直線(按原始排序) | x ,y , linetype |
| geom_text() | 文本標簽 | x , y , angle , hjust , vjust |
| geom_rect() | 矩陣 | xmin , xmax , ymin , ymax , fill , linetype |
| geom_polygon() | 多邊形 | x , y , fill , linetype |
| geom_segment() | 線段 | x , y , xend , yend , linetype |
| geom_bar() | 條狀圖 | x , fill , linetype , weight |
| geom_histogram() | 直方圖 | x , fill , linetype , weight |
| geom_boxplot() | 箱線圖 | x , y , fill , weight |
| geom_density() | 密度圖 | x , y , fill , linetype |
| geom_contour() | 等高線圖 | x , y , fill , linetype |
| geom_smooth() | 光滑曲線 | x , y , fill , linetype |
| All | color , size , group |
4.1.3 分面
分面能夠幫我們快速分析出資料各子集模式的異同,
ggplot2提供兩種分面型別,網格型( facet_grid ) 和封裝型( facet_wrap ) ,
分面生成一個二維的網格面板, 面板的行與列通過變數來定義,本小結使用 mpg 資料集的子集來進行展示,
(一)網格分面
1. 不分面
這里因為 mpg 資料集中氣缸數目 cyl 的值為 5 的觀測數目極少,暫時舍去, 將其余的資料作為進行分析的子集
submpg <- subset( mpg , cyl != 5 )
qplot (cty , hwy , data = submpg ) + facet_null() # 不進行分面

2. 一行多列
qplot (cty , hwy , data = submpg ) + facet_grid( . ~ cyl)

3. 一列多行
qplot(cty , data = submpg, geom = 'histogram' , binwidth = 2 ) + facet_grid(cyl ~. ) # 一列多行

4. 多行多列
qplot( cty , hwy , data = submpg ) + facet_grid( drv ~ cyl ) # 多行多列

(二) 封裝分面
facet_wrap 首先生成一個唱的面板條塊,然后將它封裝在二維面板中,
ggplot(mpg ,aes(displ , cty )) + geom_point() + facet_wrap( ~ cyl , nrow = 2)

總結
有的知識點比較抽象,需要多看、多試、多動手才能更好的理解代碼的含義,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/263825.html
標籤:python
