R繪圖命令分為三種類型:
- 高級繪圖命令在圖形設備上產生一個新的圖區,它可能包括坐標軸,標簽,標題等等。
- 低級畫圖命令會在一個已經存在的圖上加上更多的圖形元素,例如額外的點,線和標簽。
- 交互式圖形命令允許你交互式的用定點設備(如鼠標)在一個已經存在的圖上添加圖形信息或者提取圖形信息。
基本圖庫graphics包:
高級繪圖函數:
| plot函數:
這個函數主要用來畫散點圖。
因為plot() 函數默認啟動一個新的頁面,所以你需要禁止該操作,因此設定選項newpage = FALSE。
|
||||||||||
|
pairs函數:
可以用來顯示
多元變量兩兩間的關系。
R 為描繪多元數據提供了兩個非常有用的函數。如果 X 是一個數值矩陣或者數據框,命令
> pairs(X)
將產生X 的列之間兩兩相對的成對散點圖陣列( pairwise scatterplot matrix)。也就是說,X的每一列相對 X 的所有其他列而產生
n(
n -1) 個圖,並且把這些圖以陣列個形式顯示在圖區。這個圖形陣列的行列圖形尺度一致。
|
||||||||||
coplot函數,這個函數也是可以用來處理多個變量的,產生描述多變量的圖。
|
||||||||||
|
hist(x,nclass=n,breaks=b)函數參數說明(用來產生柱狀圖):
prob=T:設置參數prob=T,我們可以得到每個取值區間的概率,如果該參數設置為FALSE或者忽略該參數,它將給出頻數;
xlab='':設置圖像橫坐標名稱;
main='':設置圖像上方顯示的標題;
ylim=0:1 :設置縱坐標的范圍,這里設置為(0,1);
產生數值向量x的柱狀分布圖。程序會自動選擇合適的分類數目,但可以通過設定參數nclass=來改變分類數。還有一種方法是,通過參數breaks=精確設置斷點。如果設定參數probability=TRUE,柱高度將表示頻率而不是頻數。
|
||||||||||
| ts.plot(x_1,x_2...): 在一個形同的尺度里繪制任意數目的時間序列。在x_i都是一般數值向量時,這種自動的同步標化的特性依然很有用。這時,它們相對1,2,3,...繪制。 例子: ts.plot(ldeaths, mdeaths, fdeaths, gpars=list(xlab="year", ylab="deaths", lty=c(1:3)))
|
||||||||||
|
stats::qqnorm(x),stats:: qqline(x),stats:: qqplot(x,y):
分位比較圖。第一種形式顯示數值向量x相對期望的正態有序分值的比較圖(正態分值圖);第二種形式是在這個圖上加一條理論上的分位對分位的直線。第三種形式產生x的分為對y的分位的圖以比較二者是否同分布。對qqnorm(x)單獨說明: 例如: > x<-rnorm(20) > qqnorm(x) ![]() x產生了20個點之后,按順序排列,縱坐標是x的取值,橫坐標第一個數字是1/40的分位數接着是3/40的分位數,一直到39/40的分位數,qnorm(1/40)...qnorm(39/40)。 |
||||||||||
| dotchart(x,...): 產生數據x的點圖。在一個點圖里面,y-軸給定x里面數據的標簽,x-軸給出它們的值。這種圖非常容易從視覺上看出在某個特定范圍內的數據元素。 例子: > VADeaths Rural Male Rural Female Urban Male Urban Female 50-54 11.7 8.7 15.4 8.4 55-59 18.1 11.7 24.3 13.6 60-64 26.9 20.3 37.0 19.3 65-69 41.0 30.9 54.6 35.1 70-74 66.0 54.3 71.1 50.0 > dotchart(VADeaths, main = "Death Rates in Virginia - 1940") ![]() |
||||||||||
| image(x),contour(x),persp(x): x是一個數值矩陣,image產生一個長方形網格,用不同的顏色表示x的值,contour以等高線來表示x的值,persp產生3D表面。 例如: > volcano[1:10,1:10] [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [1,] 100 100 101 101 101 101 101 100 100 100 [2,] 101 101 102 102 102 102 102 101 101 101 [3,] 102 102 103 103 103 103 103 102 102 102 [4,] 103 103 104 104 104 104 104 103 103 103 [5,] 104 104 105 105 105 105 105 104 104 103 [6,] 105 105 105 106 106 106 106 105 105 104 [7,] 105 106 106 107 107 107 107 106 106 105 [8,] 106 107 107 108 108 108 108 107 107 106 [9,] 107 108 108 109 109 109 109 108 108 107 [10,] 108 109 109 110 110 110 110 109 109 108 > image(volcano) ![]() > contour(volcano) ![]() > persp(volcano) ![]() |
||||||||||
| smoothScatter()函數: 這個函數可以用來做密度圖,如果數據太多,做散點圖就會混成一團,使用smoothScatter函數,用顏色來區分密度。 例如: smoothScatter(data_entertainment) 輸出: ![]() |
||||||||||
| plot.new(): 新建一個空白的窗口。 |
||||||||||
| curve()函數: 這個函數用來畫曲線,例子如下: f <- function(x){return(1-exp(-x))} curve(f,0,2) 表示畫一條f的曲線,曲線的定義域是0到2. |
| stats::density(algae$mxPH,na.rm=T) 核密度函數,作用是假設數據服從某個密度分布,此函數結合lines()函數,能夠將數據描繪成一個光滑的密度分布曲線。 > d <- density(faithful$eruptions, bw = "sj") > plot(d,type="n")
> lines(d)
|
|
stats::lowess()
lowess() 函數則用來添加一條平滑曲線 。 該 平 滑 曲 線 擬 合 是 一 種 基 於 局 部 加 權 多 項 式 回 歸 的 非 參 數 方 法
也是和lines函數配合使用
lines(lowess(wt,mpg),col = "blue",lwd = 2,lty = 2)
|
|
rug(x)一個低級圖形函數,將x中所有的數據映射到坐標軸上:
size=1:參數(1 到4, 從底部順時鍾方式數)定義的某一側增加一個坐標軸。
|
|
abline()低級圖形函數,在圖中畫一條線,參數列表:
lty=1:線的樣式;
|
| points(x,y): 在當前圖上增加點。 > points(c(1,2,3,4),rep(0.5,4)) |
| lines(x,y): 在當前圖上增加連接線。 |
| text(x,y,labels,...): 在圖上給定x,y位置添加文字。labels經常是整數或者字符向量,此時,labels[i]放置在(x[i],y[i])處 |
| abline(a,b),abline(h=y),abline(v=x),abline(lm.obj): abline(a,b),:在當前圖上增加一條斜率為b截距為a的直線。 abline(h=y):畫一條水平線。 abline(v=x):畫一條垂線。 abline(lm.obj):畫一條擬合直線。 |
|
polygon(x,y):
繪制由(x,y)作為頂點的多邊形。這個函數還能設置多邊形內的填充顏色和邊界的顏色
|
| legend(x,y,legend): 在當前圖的特定位置增加圖例。 |
| title(main,sub): 將main定義的標題以大字體的形式放在當前圖的頂部,同時可以將sub定義的小標題以小字體的形式放在下部。 |
| axis(side ,...): 定制坐標軸。 在第一個參數(1到4,從底部順時針方式數),定義的某一側增加一個坐標軸。另一個參數控制坐標軸相對圖區的位置,刻度位置和標簽位置。這對調用參數設置axis=FALSE的plot()函數后增加定制的坐標軸非常有用。 |
| box():
這個函數可以在當前圖像上畫一個長方形。
|
交互式圖形命令:
| identify(x,y): 可以在圖上記錄下鼠標點擊的位置。 例子: plot(x,y) identify(x,y) 輸入后點擊圖片,保存,圖片就會記錄下鼠標的點擊位置。 |
| locator(n,type): 等待用戶用鼠標左鍵點擊當前圖上特定位置。這個過程直到n個點被選擇,或者另外一個鼠標鍵被點擊了。參數type允許在被選擇的點上畫圖並且有高級畫圖命令一樣的效果,默認情況下不能畫圖。locator()以雙分量x和y的列表形式返回所選中點的位置。 例如: >po<-locator(1)
點擊圖像上一次后,po會記錄下點擊的位置。
|
par()函數及其參數說明:
函數在此次會話過程中,永久的改變圖形界面:
par函數詳解:
par()函數是R里有關繪圖的重要函數之一,以下是對par()函數說明內容的一些整理。
描述:
描述:
par函數用於設定或詢問繪圖參數。參數設定可通過par(參數名 = 取值)或par(賦值參數列表)的形式進。
用法:
par(..., no.readonly = FALSE)
函數變量:
... “參數名 = 取值”或“賦值參數列表”形式的變量。
no.readonly 邏輯變量。如= TRUE且沒有其他變量, 則返回當前繪圖設備下已設定好的繪圖參數。
參數:
參數分為三類:
一、僅僅用於詢問不能被設定的參數:cin,cra,csi,cxy,dim。
二、僅能通過par()設定參數:ask,fig,fin,lheight,mai,mar,mex,mfcol,mfrow,mfg,new,oma,omd,omi,pin,plt,ps,pty,usr,xlog,ylog。
par(..., no.readonly = FALSE)
函數變量:
... “參數名 = 取值”或“賦值參數列表”形式的變量。
no.readonly 邏輯變量。如= TRUE且沒有其他變量, 則返回當前繪圖設備下已設定好的繪圖參數。
參數:
參數分為三類:
一、僅僅用於詢問不能被設定的參數:cin,cra,csi,cxy,dim。
二、僅能通過par()設定參數:ask,fig,fin,lheight,mai,mar,mex,mfcol,mfrow,mfg,new,oma,omd,omi,pin,plt,ps,pty,usr,xlog,ylog。
三、除了par(),也能在其他高級繪圖函數中設定的參數。
應用中,涉及這三類參數最多的是第三類,最少的是第一類。
查看當前參數的賦值用par("參數名")
第三類參數:
查看當前參數的賦值用par("參數名")
第三類參數:
| adj | 調整函數text,mtext,title里文本串的位置。= 0:文本串左對齊;= 0.5(缺省):文本串 居中;= 1:文本串右對齊。 |
| ann | = FALSE:不進行繪圖解釋標記(例如橫軸標題等)。 |
| bg | 設置繪圖區背景色。缺省為bg = "transparent"。 |
| bty | 設置繪圖邊框的形式。= "o"(缺省):四周邊框;= "l":左下邊框;= "7":右上邊框;= "c":上左 下邊框;= "u":左下右邊框;= "]":上右下邊框;= "n";無邊框。 |
| cex | 設置文本和符合的尺度。缺省為cex = 1。 |
| cex.axis | 相對於當前的cex設置,放大坐標標記(坐標軸標記的數字)。缺省為cex.axis = 1。 |
| cex.lab | 相對於當前的cex設置,放大坐標軸標題。缺省為cex.lab = 1。 |
| cex.main | 相對於當前的cex設置,放大圖標題。缺省為cex.main = 1。 |
| cex.sub | 相對於當前的cex設置,放大圖副標題。缺省為cex.sub = 1。 |
| col | 設置繪圖顏色。缺省為col = "black"。 |
| col.axis | 設置坐標標記顏色。缺省為col.axis = "black"。 |
| col.lab | 設置坐標軸標題顏色。缺省為col.lab = "black"。 |
| col.main | 設置圖標題顏色。缺省為col.main = "black"。 |
| col.sub | 設置圖副標題顏色。缺省為col.sub = "black"。 |
| crt | 缺省為crt = 0。 |
| err | 期望的錯誤報告程度(像該參數目前在R中未生效)。缺省為err = 0。 |
| family | 設置文本字體字體族。缺省為family = ""。 |
| fg | 設置前景色,主要用於坐標軸,邊框,圖形等,對坐標標記與坐標軸標題等外圍無影響。缺省 為fg = "black"。 |
| font | 設置文本字體。= 1(缺省):普通字體;= 2:粗體;= 3:斜體;= 4:粗斜體;...。 |
| font.axis | 設置坐標標記字體。 |
| font.lab | 設置坐標軸標題字體。 |
| font.main | 設置圖標題字體。 |
| font.sub | 設置圖副標題字體。 |
| lab | 設置坐標軸刻度數,lab = c(x,y,len)形式,目前len的設置在R中未生效。缺省為lab = c(5,5,7)。 |
| las | 設置坐標標記顯示方向。= 0(缺省):平行於坐標軸;= 1:平行於x軸;= 2:垂直於坐標 軸;= 3:平行於y軸。 |
| lend | 設置線結束端的形狀(只有把線畫很粗才能看出來)。= 0(缺省):圓形;= 1:“短”方 形;= 2:“長”方形。 |
| ljoin | 設置線交接處的性質(只有把線畫很粗才能看出來)。= 0(缺省):圓角;= 1:方角;= 2:切方角頂角。 |
| lmitre | 設置ljoin里方角向切方角頂角過渡的程度。缺省為lmitre = 10。 |
| lty | 設置線的類型。= 0:空白;= 1:(缺省)實線;= 2:短線虛線;= 3:點虛線;= 4:短線點 虛線;= 5:長線虛線;= 6:長短線虛線。 |
| lwd | 設置線寬。缺省為lwd = 1。 |
| mgp | 設置坐標軸標題,坐標標記和坐標軸邊界寬度。mgp[1]影響坐標軸標題,mgp[2,3]影響坐標標 記和坐標軸。缺省為mgp = c(3,1,0)。 |
| pch |
設置點的類型。缺省為pch = 1。
|
| srt | 逆時針選擇字符串,單位為°,只用於text函數。缺省srt = 0。 |
| tck | 設置坐標刻度線長與方向(與圖寬和高的較小者成比例)。缺省為tck = "NA"。 |
| tcl | 設置坐標刻度線長與方向(與文本行高成比例)。缺省為tcl = -0.5。 |
| xaxs,yaxs | 設置坐標軸的范圍。= "r"(缺省):先將數據范圍向雙邊擴大4%,然后繪圖;= "i":在原始 數據范圍內繪圖。 |
| xaxt,yaxt | 設置坐標軸樣式。= "s"(缺省):標准樣式;= "n":不繪坐標軸。 |
第二類函數:
| ask | = TRUE:在新圖繪制前進行提示。 |
| fig | 設定圖在繪圖設備中的位置,fig = c(x1,x2,y1,y2)的數值向量(0<=x1<x2<=1; 0<=y1<y2<=1)。缺省為fig = c(0,1,0,1)。(注:設定即開始新的繪圖) |
| fin | 設定繪圖區的寬和高。缺省為fin = c(6.999999,6.999999)。(注:設定即開始新的繪圖) |
| lheight | 設置文本行高。缺省為lheight = 1。 |
| mai | 設置圖形空白邊界,mai =c(bottom, left, top, right),單位為英寸。缺省 為mai = c(1.02,0.82,0.82,0.42)。 |
| mar | 設置圖形空白邊界行數,mar = c(bottom, left, top, right)。缺省為mar = c(5.1,4.1,4.1,2.1)。 |
| mex | 設置圖形空白邊界尺度。缺省為mex = 1。 |
| mfcol,mfrow | 設置小圖數量與位置,取值為數值型向量c(nr, nc)形式,表示把圖分為nr行nc列個小圖,圖 形順序按列排(mfcol)或按行排(mfrow)。 |
| mfg | 設置工作小圖,mfg = c(i,j),表示把第i行第j列的小圖設為當前工作小圖。(需在mfcol 或mfrow使用后才能使用該參數) |
| new | = TRUE:下一高水平繪圖指令不會清楚已繪的圖,而是在原有圖基礎上繼續繪新圖。 |
| oma | 設定圖形的外邊界大小,oma = c(bottom,left,to,right),單位為文本行數。缺省為oma = c(0,0,0,0) |
| omd | 設定圖形外邊界內部占圖形設備的比例,omd = c(x1,x2,y1,y2)。缺省為omd = c(0,1,0,1)。 |
| omi | 設定圖形的外邊界大小,omi = c(bottom,left,to,right),單位為英寸。缺省為oma = c(0,0,0,0) |
| pin | 設定當前圖的長寬,pin = c(width,height)。 |
| plt | 設定繪圖區(plot region)占圖形區(figure region)的比例,plt=c(x1,x2,y1,y2)。 |
| ps | 設置文本點的大小。缺省為ps = 12。 |
| pty | 設置作圖類型。= “m”(缺省):最大化作圖;= “s":方形圖。 |
| usr | 設置圖的坐標范圍,usr = c(x1,x2,y1,y2),即橫坐標在x1到x2之間,縱坐標在y1到y2之間。若xlog或ylog參數為TRUE,則usr設置的點按10^c(x1,x2,y1,y2)使用。 |
| xlog | = TRUE:橫坐標取對數。 |
| ylog | = TRUE:縱坐標取對數。 |
高級繪圖函數(可以產生窗口):
![]()
|
scatterplot3d包:
|
scatterplot3d函數用來繪制三維散點圖:
例子:> x<-rnorm(100) > y<-rnorm(100) > z<-rnorm(100) > scatterplot3d(x,y,z)
|
ggplot2包
ggplot2網站:
http://had.co.nz/ggplot2/
ggplot2 包提供了一個基於全面而連貫的語法的繪圖系統。它彌補了R中創建圖形缺乏一致性的缺點,使得用戶可以創建有創新性的、新穎的圖形類型。
ggplot2 中最簡單的繪圖方式是利用qplot() 函數,即快速繪圖函數。格式為:
qplot(x, y,data=,color=,shape=,size=,alpha=,geom=,method=,formula=,facets=,xlim=,ylim=,xlab=,ylab=,main=,sub=)
下表列出了上述參數/選項的定義。
qplot選項
|
選項
|
描述
|
| alpha | 元素重疊的alpha透明度,數值為0(完全透明)到1(完全不透明)間的分數 |
| color、shape、size、fill | 把變量的水平與符號顏色、形狀或大小聯系起來。對於直線圖, color將把線條顏色與變量水平聯系起來,對於密度圖和箱線圖, fill將把填充顏色與變量聯系起來。圖例將會被自動繪制 |
| data | 指定一個數據框 |
| facets | 指定條件變量,創建一個柵欄圖。表達式如rowvar ~ colvar(示例見圖16-10)。為創建一個基於單條件變量的柵欄圖,可用rowvar ~ .或. ~ colvar |
| geom | 設定定義圖形類型的幾何形狀。 geom選項是一個單條目或多條目的字符型向量,包 括 "point" 、 "smooth" 、 "boxplot" 、 "line" 、 "histogram" 、"density" 、 "bar" 和"jitter" |
| main、sub | 字符向量,設定標題和副標題 |
| method、formula | 若geom = "smooth" ,則會默認添加一條平滑擬合曲線和置信區間。 當觀測數大於1000時,便需要調用更高效的平滑擬合算法。方法包括回歸lm、廣義可加模型gam、穩健回歸rlm。 formula參數指定擬合的形式例如,要添加簡單的回歸曲線,則設定geom = "smooth", method = "lm",formula = y ~ x。將表達式改為y ~ poly(x, 2) 將生成二次擬合。注意表達式使用的是字母x和y,而不是變量的名稱對於method = "gam" ,一定要記得加載mgcv包。對於method = "rml" ,則需加載MASS包 |
| x、y | 指定擺放在水平軸和豎直軸的變量。對於單變量圖形(如直方圖),則省略y |
| xlab、ylab | 字符向量,設定橫軸和縱軸標簽 |
| xlim、ylim | 二元素數值型向量,分別指定橫軸和縱軸的最小值和最大值 |







