目錄
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的其他知識下次介紹。