r繪圖基本


R繪圖命令分為三種類型:
  • 高級繪圖命令在圖形設備上產生一個新的圖區,它可能包括坐標軸,標簽,標題等等。
  • 低級畫圖命令會在一個已經存在的圖上加上更多的圖形元素,例如額外的點,線和標簽。
  • 交互式圖形命令允許你交互式的用定點設備(如鼠標)在一個已經存在的圖上添加圖形信息或者提取圖形信息。

基本圖庫graphics包:
高級繪圖函數:
plot函數:
這個函數主要用來畫散點圖。
因為plot() 函數默認啟動一個新的頁面,所以你需要禁止該操作,因此設定選項newpage = FALSE。
plot(x,y),plot(xy) 如果x和y是向量,則plot(x,y)將產生y對x的散點圖。用包含兩個分量x和y的列表或是一個雙列的矩陣作為一個參數(第二種形式)也能得到一樣的結果
plot(x) 如果x是一個時間序列,這將產生一個時間序列圖。如果x是一個數值向量,它將產生一個向量值對該向量索引的圖。如果x是一個復向量,它將會產生一個向量元素的虛部對實部的圖
plot(f),plot(f,y) f是一個因子對象,y是一個數值向量。第一種形式產生f的直方圖;第二種形式殘生y在f各水平下的盒狀圖。
plot(df),plot(~expr),
plot(y~expr)
df是一個數據框,y是任何對象,expr是一個對象被‘+’分割的表列(如,a+b+c)。前兩種將產生數據框中變量的分布圖(第一種形式)和一系列制定對象的分布圖(第二種形式),第三種形式將得到y相對expr中各個對象畫的圖。
plot(graph)
graph是一副已經保存下來的圖,例如:
graph <- densityplot(~height,data = singer,groups = voice.part,
plot.points = F,auto.key = list(columns = 4))
plot(graph)
pairs函數:
可以用來顯示 多元變量兩兩間的關系。
R 為描繪多元數據提供了兩個非常有用的函數。如果 X 是一個數值矩陣或者數據框,命令
> pairs(X)
將產生X 的列之間兩兩相對的成對散點圖陣列( pairwise scatterplot matrix)。也就是說,X的每一列相對 X 的所有其他列而產生
n( n -1) 個圖,並且把這些圖以陣列個形式顯示在圖區。這個圖形陣列的行列圖形尺度一致。
coplot函數,這個函數也是可以用來處理多個變量的,產生描述多變量的圖。
coplot(a~b|c) a,b是數值向量,c是數值向量或因子對象。將產生一系列在給定c值下a對b的散點圖。c是因子對象,這就簡單表示a在c各個水平下對b畫的散點圖。當c是數值向量,它將會被分割成一系列條件區間,對任一區間,區間內c對應a,b值將繪制a對b的散點圖。
coplot(a~b|c+d) 產生任何在c和d聯合區間內的a對b的散點圖。
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(),也能在其他高級繪圖函數中設定的參數。
應用中,涉及這三類參數最多的是第三類,最少的是第一類。
查看當前參數的賦值用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 二元素數值型向量,分別指定橫軸和縱軸的最小值和最大值


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM