數據可視化——一文入門ggplot2

0引言

之前在R語言分組畫條形圖一文中使用過ggplot2包中的qplot函數,今天就簡單介紹下ggplot2的語法風格和使用示例。ggplot2這個函數包是R語言的一款可視化包。他的作者是Hadley Wickham,RStudio首席科學家,美國萊斯大學統計學助理教授,畢業於愛荷華州立大學統計系。這個包具有獨樹一幟的畫圖風格:映射、分面、集合對象、統計變換、座標系、圖層等等衆多系統的畫圖的風格。不吹不黑直接上乾貨,本文將會帶領大家入門ggplot2,讓大家設計出符合自己的數據的可視化作品。

1、函數包的安裝與載入

我一般習慣的安裝包tidyverse,裏面函數有包:tidyverse、ggplot2、tidyr、readr、forcats。下面是安裝載入命令:

# 包的安裝
install.packages("tidyverse")
 library(tidyverse) # 加載畫圖包 
-- Attaching packages ------------------------------------ tidyverse 1.3.0 --
√ ggplot2 3.3.0     √ purrr   0.3.3
√ tibble  2.1.3     √ dplyr   0.8.4
√ tidyr   1.0.2     √ stringr 1.4.0
√ readr   1.3.1     √ forcats 0.5.0
-- Conflicts --------------------------------------- tidyverse_conflicts() --
x dplyr::filter() masks stats::filter()
x dplyr::lag()    masks stats::lag()
Warning messages:
1: 程輯包‘tidyverse’是用R版本3.6.3 來建造的 
2: 程輯包‘ggplot2’是用R版本3.6.3 來建造的 
3: 程輯包‘tidyr’是用R版本3.6.3 來建造的 
4: 程輯包‘readr’是用R版本3.6.3 來建造的 
5: 程輯包‘forcats’是用R版本3.6.3 來建造的 

2、數據的構造

畫圖離不開一個數據,這部分構造一個可用的數據。

n = 100  # 數據的規格
x <- runif(n, 0, 4)  # 使用均勻分佈構造x變量
y <- x^2 - x + rnorm(n, 0, 0.4)   #  確定的函數關係加正態分佈的擾動項
MyClass <- factor((x>0) + (x>1) + (x>2) + (x>3),
labels = c("0-1", "1-2", "2-3", "3-4"))  # 構造數據的類
Data <- data.frame(x = x, y = y, class = MyClass)  # 生成數據框

下面查看下數據和類型。

>head(Data)  # 顯示數據的前6行
          x           y class
1 0.3640009 -0.03226906   0-1
2 3.1815743  7.14417386   3-4
3 1.2577843  0.45158761   1-2
4 2.2579793  2.81405885   2-3
5 0.1885128  0.22455903   0-1
6 0.8033352  0.01986735   0-1
> str(Data)
'data.frame':   100 obs. of  3 variables:
 $ x    : num  0.364 3.182 1.258 2.258 0.189 ...
 $ y    : num  -0.0323 7.1442 0.4516 2.8141 0.2246 ...
 $ class: Factor w/ 4 levels "0-1","1-2","2-3",..: 1 4 2 3 1 1 2 4 4 3 ...
> class(Data)
[1] "data.frame"

3、映射和代碼風格

先介紹ggplot函數,這個函數負責打開一個畫板,參數data接受數據和參數mapping接受變量的映射。直接運行打開下面畫布。

p <- ggplot(data = Data, mapping = aes(x = x, y = y))
p

畫板
注意: ggplot2的語法是使用+鏈接的。+一定位於每一行代碼的結尾不能用作開頭。不然會產生報錯。下面我們向畫板加入幾何圖形。ggplot2具有八種畫圖風格主題這裏入門就不再展示代碼。

4、添加幾何對象

哎呀終於可以添加圖像了。一般的幾何對象的格式是:geom_幾何對象

4.1添加單個幾何對象

簡單的添加點或者線:

p + geom_point()  # 添加點對象
p + geom_smooth()  # 添加線對象

在這裏插入圖片描述
在這裏插入圖片描述

4.2 分類設置顏色、形狀、大小

從數據構造時可以看到class的數據類型是因子。先分類添加顏色。函數geom_幾何圖形的參數也是有映射mapping參數的。添加顏色是可以同時識別col、color、colour三個參數,都是顏色的意思。即下面的代碼表表示一個意思。

根據類class添加顏色區分不同的類
p + geom_point(mapping = aes(color = class))
p + geom_point(mapping = aes(colour = class))
p + geom_point(mapping = aes(col = class))

在這裏插入圖片描述

p + geom_point(mapping = aes(shape = class))#分類添加形狀

在這裏插入圖片描述

p + geom_point(mapping = aes(size = class)) # 分類添加規模

在這裏插入圖片描述

4.3設置整體的顏色形狀大小

添加每一個單個幾何對象時,需要設置單獨對圖片的幾何對象設置顏色形狀大小,平行於mapping參數之外也是有這些參數的。下面是使用方式。

p + geom_point(colour = "red")

在這裏插入圖片描述

p + geom_point(shape = 2)

在這裏插入圖片描述

p + geom_point(size = 4)

在這裏插入圖片描述

4.4添加多個幾何對象

ggplot2圖的語法是通過+逐漸向圖片上添加圖像。也就意味着只要你願意,就可以同時添加多個幾何對象。如下代碼同時添加點和線:

p + geom_smooth(aes(col = class)) + 
    geom_point(mapping = aes(color = class)) 

在這裏插入圖片描述

5、分層

最後介紹一下ggplot2的分層函數facet_wrap

p + geom_smooth(aes(col = class)) + 
    geom_point(mapping = aes(color = class)) +
    facet_wrap(~ class, nrow = 2)

在這裏插入圖片描述

6、總結

讀到這裏大家應該對ggplot2包有一定的瞭解,也可以使用裏面的函數畫一些常見的統計圖形了。關於ggplot2的其他知識下次介紹。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章