R語言系列第六期:③R語言高級繪圖(上)

這一節(jié)將介紹更多的R圖形資源。首先是定制R圖形的一些常用方法,主要涉及數(shù)據(jù)和模型的圖形繪制。然后是如何自定義其他類型的圖形或點線等元素。

A. 繪制二維圖形

在R中,繪制二維圖形主要有兩個函數(shù)plot()和matplot()。

plot()函數(shù)主要繪制標準的x-y圖形,它是基于笛卡爾坐標。這個函數(shù)會將兩個向量作為參數(shù),第一個向量作為橫軸的值,第二個向量作為縱軸的值。例如:

> x=(0:100)*2*pi/100

> y=sin(x)

> plot(x,y)

如果只將一個向量做為plot()函數(shù)的參數(shù),則該向量的值將作為y軸的值,而x軸的值由R自動產(chǎn)生:

> plot(y)

matplot()函數(shù)將兩個矩陣作為參數(shù)。一個矩陣的列參照另一個矩陣的相應列來繪制圖形。在繪制同一個圖時,兩個矩陣的行數(shù)應該一樣。如果行數(shù)不一樣,行數(shù)較少的那個矩陣用缺失值(NA)來填充。第一個矩陣的值會用在橫軸上。如果其中一個矩陣只有一個列,則繪制的所有圖形都將用該列的值。每一隊列所繪制的圖形顏色不一樣,編號會用來做為不同圖點的圖形符號。這些選項也可由用戶自己定義,例如:col=和pach=,后面會介紹這些選項。在對圖形添加多個點時,matplot()函數(shù)可以省去很多麻煩,不用一一設定每個point()語句。matplot()函數(shù)可以統(tǒng)一設置各點的格式,并自動選擇合適的坐標軸范圍,使圖形中包含全部數(shù)據(jù),例如:

> y1=sin(x)

> y2=cos(x)

> y=cbind(y1,y2)

> matplot(x,y)

B. 符號、線與坐標軸風格的選項

可以使用一些選項來制定R繪制的圖形。在函數(shù)plot()和matplot()中,選項通常作為附加參數(shù)被調(diào)用??蛇x參數(shù)能以任意順序輸入,以逗號隔開。如果省略這些參數(shù),它們大多會采用默認值,下面將更加系統(tǒng)地介紹這些選項。

1

數(shù)字符號類型

繪圖時對數(shù)據(jù)點所用的符號可通過pch=選項來指定(pch意思是“plotting character”)。例如pch=1表示用圓圈繪制數(shù)據(jù)點。下圖就是常用的符號和對應的數(shù)值代碼。

2

連接線類型

如果線是用來連接數(shù)據(jù)點或者繪制曲線,則可用lty=選項來控制它的樣式。一般的線類型和對應的數(shù)值代碼如下圖所示。

另外,使用lty=選項和matplot()的其它選項時,可將這些選項的值組成一個向量,向量中的各元素會分別用到對應的圖形上,使其具有不同的樣式。例如:

> matplot(x,y,type="l",lty=c(1,2),col="black"

#Tips:我們可以看出來兩個函數(shù)圖分別用了線類型不同的兩條線來繪制,col的設定可以保證兩條線的顏色相同。

3

曲線類型

可用type=“”選項來指定不同的曲線類型。例如:type=“p”表示在繪制曲線時,只畫點而不畫連接線。常用的類型如下:

p:只畫點的符號而不畫連接線。

l:只畫連接線而不畫點的符號。

o:既畫點的符號,又畫連接線。

b:與o選項一樣,只是連接線不會與點的符號接觸。

h:在每個點與橫軸之間畫一條垂直線。

s:繪制“梯形”圖,即先用水平直線,然后用豎線連接相鄰點。

S:同s相似,只是水平線和垂直線順序相反。

c:連接線里剔除掉點位置。

4

坐標軸的限制

選項xlim=和ylim=可分別用來限制橫軸和縱軸的范圍,例如,xlim=c(0,10)會讓R只使用橫軸值在0到10范圍內(nèi)的數(shù)據(jù)。如果數(shù)據(jù)超過此范圍,就不會出現(xiàn)在繪制的圖形中。

5

刻度線

在坐標軸上的刻度線由選項lab=和tcl=控制。lab=選項是一個向量,它有兩個元素,第一個元素是橫軸的刻度線數(shù)量,第二個選項是縱軸的刻度線數(shù)量。例如lab=(7,3)表示x軸被7個刻度線分成8個間隔;y軸被3個刻度線分成4個間隔。如果所指定的lab=選項不能使繪制的圖形正常顯示,R可能會重新用恰當?shù)闹祦泶鎙ab=選項的值。tcl=選項將一行文字的高度作為刻度線的長度。tcl的值為負數(shù)是表示刻度線在坐標軸外,為正數(shù)表示刻度線在坐標軸內(nèi)。

6

坐標軸標簽

在默認的情況下,橫軸和縱軸的標簽是繪圖向量的名稱。將標簽通過xlab=“”和ylab=“”選項來修改,將所需的文本字符串放在引號中即可。例如:xlab=“time”,ylab=“population size”。

7

不顯示坐標軸

有時圖形不需要坐標軸會更好看些。不顯示坐標軸的選項是axes=FALSE,不顯示坐標軸標簽的選項是ann=FALSE。

8

字符和標簽大小可用選項cex=來修改

在默認情況下,cex指定的值為默認字符大小的倍數(shù)。cex的默認值為1。比如若cex=2,所繪制的字符為正常大小的2倍;cex=0.5,所繪制的字符是正常大小的一半。下面這些繪圖選項也是通過類似的方式控制大小,即,都是參數(shù)值作為默認大小的倍數(shù)。

cex.axis= 為刻度文本大小的倍數(shù)

cex.lab= 為軸標簽文本大小的倍數(shù)

cex.main=為標題文本大小的倍數(shù)

cex.sub= 為子標題文本大小的倍數(shù)

lwd= 為所畫線寬度的倍數(shù)

9

字體族、字號和字樣的參數(shù)

font= 用于指定繪圖使用的字體樣式。1=常規(guī),2=粗體,3=斜體,4=粗斜體,5=符號字體(以Adobe符號編碼表示)

font.axis= 坐標軸刻度文字的字體樣式

font.lab= 坐標軸標簽(名稱)的字體樣式

font.main= 標題的字體樣式

font.sub= 副標題的字體樣式

ps 字體磅值(1磅約為1/72英寸)。文本的最終大小為 ps*cex

family 繪制文本時使用的字體族。標準的取值為serif(襯線)、sans(無襯線)和mono(等寬)

C. 顏色

在數(shù)據(jù)圖形中顏色應該謹慎且有節(jié)制地使用。當使用顏色時,應突出重要的信息,而不能隨意使用它。顏色會產(chǎn)生干擾,當圖中的符號具有不同顏色時,眼睛會自動尋找不同顏色的含義。純粹的裝飾色彩會將人們的注意力從圖形本身所要表達的信息引開。用彩色數(shù)據(jù)圖形還會有一個不太重要但也不能忽略的問題:一小部分人是色盲,而這部分人的數(shù)量也不在少數(shù)。

若要在繪圖函數(shù)中使用彩色,可通過下面這些選項集來實現(xiàn):

col=用來指定plot()函數(shù)和 matplot()函數(shù)中數(shù)據(jù)符號和曲線的顏色,還有barplot()函數(shù)生成的條形圖顏色;

col.axis=坐標軸的顏色

col.lab=坐標軸標簽的顏色

col.main=主標題顏色

col.sub=副標題顏色

fg= 圖形的前景色

bg= 圖形的背景色

顏色可通過代碼值來指定。例如col=25會得到藍色。在控制臺執(zhí)行colors()函數(shù)就可知R能識別657種顏色,為了方便起見,會列出657顏色名稱,這些名稱能被R識別。所以,col=“blue”與col=25是一樣的效果。

> colors()

? [1] "white"? ? ? ? ? ? ? ? "aliceblue"? ? ? ? ? ? "antiquewhite"? ? ? ?

? [4] "antiquewhite1"? ? ? ? "antiquewhite2"? ? ? ? "antiquewhite3"? ? ?

? [7] "antiquewhite4"? ? ? ? "aquamarine"? ? ? ? ? "aquamarine1"? ? ? ?

......? ? ? ?

[652] "yellow"? ? ? ? ? ? ? "yellow1"? ? ? ? ? ? ? "yellow2"? ? ? ? ? ?

[655] "yellow3"? ? ? ? ? ? ? "yellow4"? ? ? ? ? ? ? "yellowgreen"

當然有些時候我們需要在圖形上繪制獨立的點,線或者文本等,這些都不是繪圖函數(shù)的參數(shù),需要獨立的函數(shù)來支撐,我們下一節(jié)就為大家來介紹這些。

參考資料:

1. 《R語言統(tǒng)計入門(第二版)》 人民郵電出版社? Peter Dalgaard著?

2. 《R語言初學者指南》 人民郵電出版社? Brian Dennis著

3. Vicky的小筆記本《blooming for you》by Vicky

?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容