NO IMAGE

第三章 圖形入門

本章概要

1 建立和儲存圖形

2 定義符號、線、顏色和座標軸

3 文字標註

4 掌控圖形維數

5 多幅圖合在一起

本章所介紹內容概括如下。

一圖勝千字,人們從視覺層更易獲取和理解資訊。

圖形工作

R具有非常強大的繪圖功能,看下面程式碼。

> attach(mtcars)

> plot(wt, mpg)

> abline(lm(mpg~wt))

> title(“Regression of MPG on Weight”)

> detach(mtcars)

效果圖如圖1所示。

圖1:mtcars資料集中wt-mpg線性迴歸圖

圖形儲存方法可以用RGUI完成或者寫程式碼儲存。例如把上圖以pdf格式儲存在D:/data目錄下,程式碼如下:

> setwd(“E:\\data”)

> pdf(“wt-mpg.pdf”)

> attach(mtcars)

> plot(wt, mpg)

> abline(lm(mpg~wt))

> title(“Regresssion of MPG on Weight”)

> detach(mtcars)

>dev.off()

> dir()

一個簡單例項

資料集,病人對兩種藥不同劑量的反映,如圖2所示。

圖2: 病人對兩種藥不同劑量的反映

程式清單

> dosage <- c(20, 30, 40, 45, 60)

> responseA <- c(16, 20, 27, 40, 60)

> responseB <- c(15, 18, 25, 31, 40)

> plot(dosage, responseA, type=”b”)

效果圖如圖3所示。

圖3: 不同劑量下,病人對藥A的反映圖

影象化引數

通過圖形化引數定義一個圖形的特徵(字型、顏色、標題、座標軸)。利用par()函式指定圖形化引數。或者把這些引數至於繪圖函式中。現基於兩種不同的方式使用圖形化引數。

方式一:par()函式

> opar <- par(no.readonly=TRUE)

> par(lty=2, pch=17)

> plot(dosage, responseB, type=”b”)

> par(opar)

方式二:在繪圖函式進行引數設定

> plot(dosage, responseB, type=”b”, lty=2, pch=17)

兩種方式執行後效果一樣,如圖4所示:

圖4:不同劑量下病人對藥B的反映圖

R繪圖常用引數歸納如下。

符號和線型引數,如圖5所示

圖5:R符號和線型引數

R符號如6所示,線型如圖7所示。

圖6:R符號

圖7:R線型

顏色引數,如圖8所示。

圖8:R顏色引數

關於R顏色,可以進一步參閱:http://research.stowers-institute.org/efg/R/Color/Chart

文字引數,如圖9所示。

圖9:文字尺寸引數

字型引數,如圖10所示。

圖10:字型引數

面板大小和邊距引數,如圖11所示。

圖11:面板大小和邊距引數

基於引數化圖形的一個例項。

程式清單如下:

> dose <- c(20, 30, 40, 45, 60)

> drugA <- c(16, 20, 27, 40, 60)

> drugB <- c(15, 18, 25, 31, 40)

> opar <- par(no.readonly=TRUE)

> par(pin=c(2, 3))

> par(lwd=2, cex=1.5)

> par(cex.axis = .75, font.axis=3)

> plot(dose, drugA, type=”b”, pch=19, lty=2, col=”red”)

> plot(dose, drugB, type=”b”, pch=23, lty=6, col=”blue”, bg=”green”)

> par(opar)

圖形修飾

圖形修飾包括新增文字、自定義座標軸和說明。例如:

>plot(dose,drugA,type=”b”,col=”red”,lty=2,pch=2,lwd=2,

main=”Clinical Trials for Drug A”,sub=”This is hypothetical data”, 

xlab=”Dosage”, ylab=”Drug Resoponse”, 

xlim=c(0,60), ylim=c(0, 70))

效果圖如圖12所示。

圖12:圖形修飾演示圖

圖形修飾主要又如下幾個方面。

方面一:標題,使用title()函式。

方面二:座標軸,使用axis()函式。

方面三:參照線,使用abline()函式。

方面四:說明,使用legend()函式。

方面五:文字,使用text()函式。

圖形合併

R使用函式par()或者layout()實現圖形合併。關於每種方法,演示如下:

方法一:基於par()圖形合併

程式清單:

> rm(list=ls())

> attach(mtcars)

> opar <- par(no.readonly=TRUE)

> par(mfrow=c(2,2))

> plot(wt,mpg, main=”Scatterplot of wt vs. mpg”)

> plot(wt,disp, main=”Scatterplot of wt vs disp”)

> hist(wt, main=”Histogram of wt”)

> boxplot(wt, main=”Boxplot of wt”)

> par(opar)

> detach(mtcars)

效果圖如圖13所示。

圖13:基於par()圖形合併

方法二:基於layout()圖形合併

程式清單:

> layout(matrix(c(1,1,2,3), 2, 2, byrow=TRUE))

> hist(wt)

> hist(mpg)

> hist(disp)

> detach(mtcars)

效果圖如圖14所示。

圖14:基於layou()圖形合併

總結

1 圖形建立與儲存

2 圖形修飾與合併

參考資料

王路情部落格