自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

R語言學(xué)習筆記(3):繪圖

大數(shù)據(jù)
經(jīng)過前面兩篇的學(xué)習內(nèi)容,我們已經(jīng)大體知道了R是什么以及R中主要的數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)。盡管了解得很粗淺,但我還是迫不及待的進入了“繪圖”這一主題。

R提供了非常豐富的繪圖功能,可以通過命令:demo (graphics) 或者demo(persp)來體驗R繪圖功能的強大。

圖形工具是 R 環(huán)境的一個重要組成部分。 R提供了多種繪圖相關(guān)的命令,分成三類:

高級繪圖命令:在圖形設(shè)備上產(chǎn)生一個新的圖區(qū),它可能包括坐標軸,標簽,標題等等。

低級繪圖命令:在一個已經(jīng)存在的圖上加上更多的圖形元素,如額外的點,線和標簽。

交互式圖形命令:允許交互式地用鼠標在一個已經(jīng)存在的圖上添加圖形信息或者提取圖形信息。

在R中執(zhí)行繪圖命令,會啟動一個圖形設(shè)備驅(qū)動(device driver)。該驅(qū)動會打開特定的圖形窗口(graphics window)以顯示交互式的圖片。一旦設(shè)備驅(qū)動啟動,R 繪圖命令可以用來產(chǎn)生統(tǒng)計圖或者設(shè)計全新的圖形顯示。此外,R 有一系列圖形參數(shù)。這些圖形參數(shù)可以修改從而定制你的圖形環(huán)境。

高級繪圖命令

高級圖形顯示函數(shù)可以根據(jù)數(shù)據(jù)顯示完整的圖形(chart),包括坐標軸,標簽、標題、序列等。如果你之前熟悉其他繪圖庫(比如JFreeChart,matplotlib等)的概念,可以很容易的掌握R中的繪圖函數(shù)。

圖表類型

R支持很多圖表類型。在擴展包里面可能會提供更多的圖表類型。下表給出R基本環(huán)境中支持的圖表類型及其對應(yīng)的繪圖函數(shù):

  1. plot(x)          以x的元素值為縱坐標、以序號為橫坐標繪圖 
  2. plot(x,y)        x(在x-軸上)與y(在y-軸上)的二元作圖 
  3. sunflowerplot(x,y)同上,但是以相似坐標的點作為花朵,其花瓣數(shù)目為點的個數(shù) 
  4. pie(x)餅圖 
  5. boxplot(x)盒形圖(“box-and-whiskers”) 
  6. stripchart(x)把x的值畫在一條線段上,樣本量較小時可作為盒形圖的替代 
  7. coplot(x~y|z)關(guān)于z的每個數(shù)值(或數(shù)值區(qū)間)繪制x與y的二元圖 
  8. interaction.plot(f1, f2, y)如果f1和f2是因子,作y的均值圖,以f1的不同值作為x軸, 而f2的不同值對應(yīng)不同曲線;可以用選項fun指定y的其他的統(tǒng)計量(缺省計算均值,fun=mean) 
  9. matplot(x,y)二元圖,其中x的第一列對應(yīng)y的第一列,x的第二列對應(yīng)y的第二列,依次類推。 
  10. dotchart(x)如果x是數(shù)據(jù)框,作Cleveland點圖(逐行逐列累加圖) 
  11. fourfoldplot(x)用四個四分之一圓顯示2X2列聯(lián)表情況(x必須是dim=c(2,2,k)的數(shù)組,或者是dim=c(2,2)的矩陣,如果k=1) 
  12. assocplot(x)Cohen–Friendly圖,顯示在二維列聯(lián)表中行、列變量偏離獨立性的程度 
  13. mosaicplot(x)列聯(lián)表的對數(shù)線性回歸殘差的馬賽克圖 
  14. pairs(x)如果x是矩陣或是數(shù)據(jù)框,作x的各列之間的二元圖 
  15. plot.ts(x)如果x是類"ts"的對象,作x的時間序列曲線,x可以是多元的,但是序列必須有相同的頻率和時間 
  16. ts.plot(x)同上,但如果x是多元的,序列可有不同的時間但須有相同的頻率 
  17. hist(x)x的頻率直方圖 
  18. barplot(x)x的值的條形圖 
  19. qqnorm(x)正態(tài)分位數(shù)-分位數(shù)圖 
  20. qqplot(x,y)y對x的分位數(shù)-分位數(shù)圖 
  21. contour(x,y,z)等高線圖(畫曲線時用內(nèi)插補充空白的值) 
  22. filled.contour(x,y,z)同上,等高線之間的區(qū)域是彩色的,并且繪制彩色對應(yīng)的值的圖例 
  23. image(x,y,z)同上,但是實際數(shù)據(jù)大小用不同色彩表示 
  24. persp(x,y,z)同上,但為透視圖 
  25. stars(x)如果x是矩陣或者數(shù)據(jù)框,用星形和線段畫出 
  26. symbols(x,y,...)在由x和y給定坐標畫符號(圓,正方形,長方形,星,溫度計式或者盒形圖),符號的類型、大小、顏色等由另外的變量指定 
  27. termplot(mod.obj)回歸模型(mod.obj)的(偏)影響圖 
  28. heatmap(x)熱度圖 

其他的包中可能也會提供額外的圖表類型,比如:

quantmod包提供的K線圖:chartSeries()

portfolio包提供的tree map(板塊層級圖):map.market(id, area, group, color)用矩形面積來表示數(shù)值,可用于分析磁盤空間占用

lattice包提供的平行坐標圖:parallel(data)

  1. > x = rnorm(10) 
  2. > y = rnorm(10) 
  3. > plot(x,y) 

 Screenshot

繪圖參數(shù)

很多時候,你可能需要調(diào)整圖形的顯示方式。R的繪圖參數(shù)幾乎可以定制圖形的任何顯示(如標題,坐標軸,顏色,字體等)。

R 擁有一個數(shù)目很大的圖形參數(shù)列表。該列表包括控制線條樣式,顏色,圖形排列和文字對齊等方面的參數(shù)。

更改圖形參數(shù)有兩種方式,一種是直接在繪圖函數(shù)中設(shè)置參數(shù),這種方式只影響當前繪圖函數(shù),但是不是所有的參數(shù)都能夠通過這種方式設(shè)置;另一種是通過par()函數(shù)設(shè)置,這種方式會影響當前繪圖設(shè)備上的所有圖形。

下面先看一個直接設(shè)置參數(shù)的例子:

  1. >plot(x,y,type="b",main="main title",sub='sub title',xlab="x axis",ylab='y axis',asp=0.2) 

1 $ screenshot

使用par()函數(shù)的例子:

  1. opar <- par()#備份原來的繪圖參數(shù) 
  2. par(bg="lightyellow"col.axis="blue"mar=c(4, 4, 2.5, 0.25)) 
  3. plot(x, y, xlab="Ten random values"ylab="Ten other values"
  4. xlim=c(-2, 2), ylim=c(-2, 2), pch=22col="red"bg="yellow"
  5. bty="l"tcl=-.25, las=1cex=1.5) 
  6. par(opar)#恢復(fù)原來的繪圖參數(shù) 

通過?par可以查到所有參數(shù)的說明。下面列舉最常用的一些參數(shù):

adj控制關(guān)于文字的對齊方式,0是左對齊,0.5是居中對齊,1是右對齊,值> 1時對齊位置在文本右邊的地方,取負值時對齊位置在文本左邊的地方;如果給出兩個值(例如c(0, 0)),第二個只控制關(guān)于文字基線的垂直調(diào)整

bg指定背景色(例如bg="red", bg="blue"; 用colors()可以顯示657種可用的顏 色名)

bty控制圖形邊框形狀,可用的值為: "o", "l", "7", "c", "u" 和"]" (邊框和字符 的外表相像);如果bty="n"則不繪制邊框

cex控制缺省狀態(tài)下符號和文字大小的值;另外,cex.axis控制坐標軸刻度數(shù)字大小,cex.lab控制坐標軸標簽文字大小,cex.main控制標題文字大小,cex.sub控制副標題文字大小

col控制符號的顏色;和cex類似,還可用:col.axis, col.lab, col.main, col.sub

font控制文字字體的整數(shù)(1: 正常,2: 斜體,3: 粗體,4: 粗斜體);和cex類似, 還可用: font.axis, font.lab, font.main, font.sub

las控制坐標軸刻度數(shù)字標記方向的整數(shù)(0: 平行于軸,1: 橫排,2: 垂直于軸,3: 豎排)

lty控制連線的線型,可以是整數(shù)(1: 實線,2: 虛線,3: 點線,4: 點虛線,5: 長虛線,6: 雙虛線),或者是不超過8個字符的字符串(字符為從"0"到"9"之間的數(shù)字)交替地指定線和空白的長度,單位為磅(points)或象素,例如lty="44"和lty=2效果相同

lwd控制連線寬度的數(shù)字

mar控制圖形邊空的有4個值的向量c(bottom, left, top, right), 缺省值 為c(5.1, 4.1, 4.1, 2.1)

mfcolc(nr,nc)的向量,分割繪圖窗口為nr行nc列的矩陣布局,按列次序使用各子窗口

mfrow同上,但是按行次序使用各子窗口(參照 4.1.2)

pch控制符號的類型,可以是1到25的整數(shù),也可以是""里的單個字符

2 $ screenshot

ps控制文字大小的整數(shù),單位為磅(points)

pty指定繪圖區(qū)域類型的字符,"s": 正方形,"m":最大利用

tck指定軸上刻度長度的值,單位是百分比,以圖形寬、高中最小一個作為基數(shù); 如果tck=1則繪制grid

tcl同上,但以文本行高度為基數(shù)(缺省下tcl=-0.5)

xaxt如果xaxt="n"則設(shè)置x-軸但不顯示(有助于和axis(side=1, ...)聯(lián)合使用)

yaxt如果yaxt="n"則設(shè)置y-軸但不顯示(有助于和axis(side=2, ...)聯(lián)合使用)

低級繪圖命令

R還可以在現(xiàn)有圖形(通過高級繪圖命令繪制)的基礎(chǔ)上增加一些額外的顯示,如標題、繪制坐標軸、在特定的位置增加圖形(比如輔助線,擬合線)或文字等。

這些函數(shù)在R中稱為低級作圖命 令(low-level plotting commands)。一些常用的低級圖形命令包括:

scatter.smooth(x, y, …)LOESS(局部加權(quán)散點平滑)擬合曲線

points(x, y)添加點(可以使用選項type=)

lines(x, y)同上,但是添加線

text(x, y, labels,…)在(x,y)處添加用labels指定的文字;典型的用法是: plot(x, y, type=”n”); text(x, y, names)

mtext(text,side=3, line=0,…)在邊空添加用text指定的文字,用side指定添加到哪一邊(參照 下面的axis());line指定添加的文字距離繪圖區(qū)域的行數(shù)

segments(x0, y0,x1, y1)從(x0,y0)各點到(x1,y1)各點畫線段

arrows(x0, y0,x1, y1, angle= 30,code=2)同上但加畫箭頭,如果code=2則在各(x0,y0)處畫箭頭,如 果code=1則在各(x1,y1)處畫箭頭,如果code=3則在兩端都畫箭頭; angle控制箭頭軸到箭頭邊的角度

abline(a,b)繪制斜率為b和截距為a的直線

abline(h=y)在縱坐標y處畫水平線

abline(v=x)在橫坐標x處畫垂直線

abline(lm.obj)畫由lm.obj確定的回歸線

rect(x1, y1, x2, y2)繪制長方形,(x1, y1)為左下角,(x2,y2)為右上角

polygon(x, y)繪制連接各x,y坐標確定的點的多邊形

legend(x, y, legend)在點(x,y)處添加圖例,說明內(nèi)容由legend給定

title()添加標題,也可添加一個副標題

axis(side, vect)畫坐標軸,side=1時畫在下邊,side=2時畫在左邊,side=3時畫在上邊,side=4時畫在右邊。可選參數(shù)at指定畫刻度線的位置坐標

box()在當前的圖上加上邊框

rug(x)在x-軸上用短線畫出x數(shù)據(jù)的位置

locator(n, type=”n”, …)在用戶用鼠標在圖上點擊n次后返回n次點擊的坐標(x, y);并可以在點擊處繪制符號(type=”p”時)或連線(type=”l”時),缺省情 況下不畫符號或連線

下面的例子中,使用plot(...,type="n")繪制一個“空白”的圖形, 然后用低級函數(shù)來添加點,坐標軸,標簽等:

  1. opar <- par()#備份繪圖參數(shù) 
  2. par(bg="lightgray"mar=c(2.5, 1.5, 2.5, 0.25))#設(shè)置繪圖參數(shù) 
  3. plot(x, y, type="n"xlab=""ylab=""xlim=c(-2, 2),  ylim=c(-2, 2), xaxt="n"yaxt="n")#繪制“空白”圖形,設(shè)定坐標軸范圍 
  4. rect(-3, -3, 3, 3, col="cornsilk")#修改繪圖區(qū)域的顏色 
  5. points(x, y, pch=10col="red"cex=2)#畫點 
  6. axis(side=1, c(-2, 0, 2), tcl=-0.2, labels=FALSE)#添加坐標軸 
  7. axis(side=2, -1:1, tcl=-0.2, labels=FALSE
  8. title("How to customize a plot with R (ter)",#添加標題 
  9. font.main=4adj=1cex.main=1
  10. mtext("Ten random values", side=1line=1at=1cex=0.9, font=3)#繪制坐標軸標簽 
  11. mtext("Ten other values", line=0.5, at=-1.8, cex=0.9, font=3
  12. mtext(c(-2, 0, 2), side=1las=1at=c(-2, 0, 2), line=0.3, 
  13. col="blue"cex=0.9) 
  14. mtext(-1:1, side=2las=1at=-1:1, line=0.2, col="blue"cex=0.9) 
  15. par(opar)#恢復(fù)繪圖參數(shù) 
3 $ screenshot

交互式繪圖命令

有時需要根據(jù)用戶的想法而不是數(shù)據(jù)進行繪圖,即交互式繪圖。R對此有很好的支持,允許用戶直接用鼠標在一個圖上提取和提交信息。

R中最簡單、最常用的函數(shù)是locator(n, type)。等待用戶用鼠標左鍵點擊n個位置,如果設(shè)置了type,還可以根據(jù)這n個位置直接進行低級繪圖。

比如:

  1. x = rnorm(10) 
  2. plot(x) 
  3. locator(5,"o") 

locator也可以先不繪圖,只把用戶點擊的坐標記錄下來:

  1. r = locator(2) 

這個有意思的交互函數(shù)是identify(x, y, labels),可以參考幫助自己學(xué)習。

原文鏈接:http://www.cnblogs.com/holbrook/archive/2013/05/13/3075777.html

 

【編輯推薦】

1.R語言學(xué)習筆記(1):R是什么

1.R語言學(xué)習筆記(2):數(shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)

 

責任編輯:彭凡 來源: 博客園
相關(guān)推薦

2013-05-10 14:37:37

2016-11-11 14:12:19

R語言

2009-08-14 15:54:12

C#編程語言

2013-05-10 15:27:07

R語言

2015-08-18 09:42:25

2009-09-04 08:51:33

Java語言

2010-01-27 16:52:31

C++語言學(xué)習

2009-08-28 17:19:15

C#語言學(xué)習

2010-01-15 10:32:21

C++語言

2015-01-12 09:40:41

iOS學(xué)習資料整理

2015-01-12 12:12:00

iOS學(xué)習資料整理

2009-10-19 09:16:08

VB.NET語言

2012-02-13 15:48:42

Java

2010-01-27 09:12:01

C++語言學(xué)習

2017-09-08 08:48:18

Swift語言數(shù)據(jù)分段機器學(xué)習

2010-07-13 15:43:57

Perl語言

2017-04-05 18:10:05

R語言開發(fā)Ross

2010-07-16 12:50:45

Perl語言

2011-05-26 16:04:17

java

2010-01-18 11:20:58

C++語言
點贊
收藏

51CTO技術(shù)棧公眾號