R 自學指引之進階 繪圖命令簡介與操作 – 進階篇

文/圖:陸聲忠

R 是為了機率統計而設計的開源軟體,所使用的程式語言,被稱為 R 語言。R 語言與 S-PLUS 使用的語言類似,有非常強大的繪圖命令。上次的文章中,我們介紹過內建的高階繪圖命令。這次將為大家介紹如何結合圖表,以及在R中諸多套件中,兩個相當受到歡迎進階繪圖套件。

先介紹的是如何結合多張圖表,par() 可命令搭配 mfrow 或 mfcol 參數適合規則形狀的多張圖形分佈,範例如下。
par(mai=c(0.5,0.5,0.5,0.5));par(mfcol=c(3,2)) (ENTER)
mai 可設定紙張邊緣,以英吋為單位,依序是底部、左邊、頂端、右邊,mfcol 是逐欄排列,例如要將物件加入 R 的搜索路徑,可用以下命令。
attach(mtcars)    (ENTER)
當 no.readonly=TRUE時,par() 就只允許有這一個參數(圖1)。
par_origin <- par(no.readonly = TRUE) (ENTER)
par(mfcol=c(3,2)) (ENTER)
plot(1,1,pch=”1″,cex=1.7) (ENTER)
plot(1,1,pch=”2″,cex=1.7) (ENTER)
plot(1,1,pch=”3″,cex=1.7) (ENTER)
plot(1,1,pch=”4″,cex=1.7) (ENTER)
plot(1,1,pch=”5″,cex=1.7) (ENTER)
plot(1,1,pch=”6″,cex=1.7) (ENTER)

圖1:par()搭配mfrow或mfcol參數結合多張圖表為規則形狀分佈。

layout(M) 則是用來設定比較不對稱的多圖佈局,依照M矩陣設計位置範例如下(圖2)。
m <- matrix(c(1, 0, 1, 3, 2, 3, 2, 0), nrow = 2, ncol = 4) (ENTER)
layout(m) (ENTER)
plot(1:10, main = “plot1”) (ENTER)
plot(10:1, main = “plot2”) (ENTER)
plot(rnorm(10), main = “plot3”) (ENTER)

圖2:以 layout(M) 設定比較不對稱的多圖佈局。

以下則以 R 內建鳶尾花資料集 iris 為例,將其產生的各式圖表結合在一起。iris資料集共有 5 個變數為 150 筆觀察值,單位是公分。其中 Sepal Length 是花萼長度,Sepal Width 是花萼寬度,Petal Length 是花瓣長度,Petal Width 是花瓣寬度。例如要取得類別 Species 中 Setosa、Versicolor 和 Virginica 三個品種的數據,可用以下命令(圖3)。
attach(iris) (ENTER)
layout(matrix(c(2,0,1,3),2,2, byrow=T), widths=c(2,1),
+ heights=c(1,2)) (ENTER)
plot(Sepal.Length,Sepal.Width,main=”Sepal Length-Width Scatter Graph”) (ENTER)
hist(Sepal.Length,main=”Sepal Length Histogram Graph”) (ENTER)
hist(Sepal.Width,main=”Sepal Width Histogram Graph”) (ENTER)

圖3:layout(M) 範例以鳶尾花 iris 資料集為例。

R 繪圖系統

R 中存在著四套繪圖系統,分別是基礎繪圖系統(The Base Plotting System)、Grid 圖形系統、lattice 繪圖系統(The Lattice System)以及 ggplot2 繪圖系統(The Ggplot2 System)。Grid 圖形系統提供了一種比標準圖形系統更低水準的方法,使用者可以在圖形設備上隨意建立矩形區域,然後在該區域定義座標系統,其後使用繪圖的基礎單元來控制圖形。所以 Grid 圖形非常的靈活,但是 Grid 圖形系統沒有提供生成統計圖形,甚至沒有提供完整繪圖的命令。一般來說,我們不會直接使用 Grid。Lattice 和 Ggplot2 繪圖系統都是基於 Grid 圖形系統的,我們在使用它們的時候,其實就會使用 Grid,只是不會直接去呼叫它。以下就簡單介紹一下 Lattice/Ggplot2 這二個繪圖系統。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。