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

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

A. 繪制二維圖形

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

plot()函數(shù)主要繪制標(biāo)準(zhǔn)的x-y圖形烹吵,它是基于笛卡爾坐標(biāo)。這個(gè)函數(shù)會(huì)將兩個(gè)向量作為參數(shù)桨武,第一個(gè)向量作為橫軸的值肋拔,第二個(gè)向量作為縱軸的值。例如:

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

> y=sin(x)

> plot(x,y)

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

> plot(y)

matplot()函數(shù)將兩個(gè)矩陣作為參數(shù)。一個(gè)矩陣的列參照另一個(gè)矩陣的相應(yīng)列來(lái)繪制圖形性誉。在繪制同一個(gè)圖時(shí)窿吩,兩個(gè)矩陣的行數(shù)應(yīng)該一樣。如果行數(shù)不一樣错览,行數(shù)較少的那個(gè)矩陣用缺失值(NA)來(lái)填充纫雁。第一個(gè)矩陣的值會(huì)用在橫軸上。如果其中一個(gè)矩陣只有一個(gè)列倾哺,則繪制的所有圖形都將用該列的值轧邪。每一隊(duì)列所繪制的圖形顏色不一樣刽脖,編號(hào)會(huì)用來(lái)做為不同圖點(diǎn)的圖形符號(hào)。這些選項(xiàng)也可由用戶(hù)自己定義忌愚,例如:col=和pach=曲管,后面會(huì)介紹這些選項(xiàng)。在對(duì)圖形添加多個(gè)點(diǎn)時(shí)硕糊,matplot()函數(shù)可以省去很多麻煩院水,不用一一設(shè)定每個(gè)point()語(yǔ)句。matplot()函數(shù)可以統(tǒng)一設(shè)置各點(diǎn)的格式简十,并自動(dòng)選擇合適的坐標(biāo)軸范圍衙耕,使圖形中包含全部數(shù)據(jù),例如:

> y1=sin(x)

> y2=cos(x)

> y=cbind(y1,y2)

> matplot(x,y)

B. 符號(hào)勺远、線與坐標(biāo)軸風(fēng)格的選項(xiàng)

可以使用一些選項(xiàng)來(lái)制定R繪制的圖形橙喘。在函數(shù)plot()和matplot()中,選項(xiàng)通常作為附加參數(shù)被調(diào)用胶逢√梗可選參數(shù)能以任意順序輸入,以逗號(hào)隔開(kāi)初坠。如果省略這些參數(shù)和簸,它們大多會(huì)采用默認(rèn)值,下面將更加系統(tǒng)地介紹這些選項(xiàng)碟刺。

1

數(shù)字符號(hào)類(lèi)型

繪圖時(shí)對(duì)數(shù)據(jù)點(diǎn)所用的符號(hào)可通過(guò)pch=選項(xiàng)來(lái)指定(pch意思是“plotting character”)锁保。例如pch=1表示用圓圈繪制數(shù)據(jù)點(diǎn)。下圖就是常用的符號(hào)和對(duì)應(yīng)的數(shù)值代碼半沽。

2

連接線類(lèi)型

如果線是用來(lái)連接數(shù)據(jù)點(diǎn)或者繪制曲線爽柒,則可用lty=選項(xiàng)來(lái)控制它的樣式。一般的線類(lèi)型和對(duì)應(yīng)的數(shù)值代碼如下圖所示者填。

另外浩村,使用lty=選項(xiàng)和matplot()的其它選項(xiàng)時(shí),可將這些選項(xiàng)的值組成一個(gè)向量占哟,向量中的各元素會(huì)分別用到對(duì)應(yīng)的圖形上心墅,使其具有不同的樣式。例如:

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

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

3

曲線類(lèi)型

可用type=“”選項(xiàng)來(lái)指定不同的曲線類(lèi)型。例如:type=“p”表示在繪制曲線時(shí)蜜暑,只畫(huà)點(diǎn)而不畫(huà)連接線铐姚。常用的類(lèi)型如下:

p:只畫(huà)點(diǎn)的符號(hào)而不畫(huà)連接線。

l:只畫(huà)連接線而不畫(huà)點(diǎn)的符號(hào)史煎。

o:既畫(huà)點(diǎn)的符號(hào)谦屑,又畫(huà)連接線驳糯。

b:與o選項(xiàng)一樣篇梭,只是連接線不會(huì)與點(diǎn)的符號(hào)接觸氢橙。

h:在每個(gè)點(diǎn)與橫軸之間畫(huà)一條垂直線。

s:繪制“梯形”圖恬偷,即先用水平直線悍手,然后用豎線連接相鄰點(diǎn)。

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

c:連接線里剔除掉點(diǎn)位置。

4

坐標(biāo)軸的限制

選項(xiàng)xlim=和ylim=可分別用來(lái)限制橫軸和縱軸的范圍诡延,例如滞欠,xlim=c(0,10)會(huì)讓R只使用橫軸值在0到10范圍內(nèi)的數(shù)據(jù)。如果數(shù)據(jù)超過(guò)此范圍肆良,就不會(huì)出現(xiàn)在繪制的圖形中筛璧。

5

刻度線

在坐標(biāo)軸上的刻度線由選項(xiàng)lab=和tcl=控制。lab=選項(xiàng)是一個(gè)向量惹恃,它有兩個(gè)元素夭谤,第一個(gè)元素是橫軸的刻度線數(shù)量,第二個(gè)選項(xiàng)是縱軸的刻度線數(shù)量巫糙。例如lab=(7,3)表示x軸被7個(gè)刻度線分成8個(gè)間隔朗儒;y軸被3個(gè)刻度線分成4個(gè)間隔。如果所指定的lab=選項(xiàng)不能使繪制的圖形正常顯示参淹,R可能會(huì)重新用恰當(dāng)?shù)闹祦?lái)代替lab=選項(xiàng)的值醉锄。tcl=選項(xiàng)將一行文字的高度作為刻度線的長(zhǎng)度。tcl的值為負(fù)數(shù)是表示刻度線在坐標(biāo)軸外浙值,為正數(shù)表示刻度線在坐標(biāo)軸內(nèi)榆鼠。

6

坐標(biāo)軸標(biāo)簽

在默認(rèn)的情況下,橫軸和縱軸的標(biāo)簽是繪圖向量的名稱(chēng)亥鸠。將標(biāo)簽通過(guò)xlab=“”和ylab=“”選項(xiàng)來(lái)修改妆够,將所需的文本字符串放在引號(hào)中即可。例如:xlab=“time”负蚊,ylab=“population size”神妹。

7

不顯示坐標(biāo)軸

有時(shí)圖形不需要坐標(biāo)軸會(huì)更好看些。不顯示坐標(biāo)軸的選項(xiàng)是axes=FALSE家妆,不顯示坐標(biāo)軸標(biāo)簽的選項(xiàng)是ann=FALSE鸵荠。

8

字符和標(biāo)簽大小可用選項(xiàng)cex=來(lái)修改

在默認(rèn)情況下,cex指定的值為默認(rèn)字符大小的倍數(shù)伤极。cex的默認(rèn)值為1蛹找。比如若cex=2姨伤,所繪制的字符為正常大小的2倍;cex=0.5庸疾,所繪制的字符是正常大小的一半乍楚。下面這些繪圖選項(xiàng)也是通過(guò)類(lèi)似的方式控制大小,即届慈,都是參數(shù)值作為默認(rèn)大小的倍數(shù)徒溪。

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

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

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

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

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

9

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

font= 用于指定繪圖使用的字體樣式金顿。1=常規(guī)臊泌,2=粗體,3=斜體揍拆,4=粗斜體渠概,5=符號(hào)字體(以Adobe符號(hào)編碼表示)

font.axis= 坐標(biāo)軸刻度文字的字體樣式

font.lab= 坐標(biāo)軸標(biāo)簽(名稱(chēng))的字體樣式

font.main= 標(biāo)題的字體樣式

font.sub= 副標(biāo)題的字體樣式

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

family 繪制文本時(shí)使用的字體族嫂拴。標(biāo)準(zhǔn)的取值為serif(襯線)播揪、sans(無(wú)襯線)和mono(等寬)

C. 顏色

在數(shù)據(jù)圖形中顏色應(yīng)該謹(jǐn)慎且有節(jié)制地使用。當(dāng)使用顏色時(shí)顷牌,應(yīng)突出重要的信息剪芍,而不能隨意使用它。顏色會(huì)產(chǎn)生干擾窟蓝,當(dāng)圖中的符號(hào)具有不同顏色時(shí)罪裹,眼睛會(huì)自動(dòng)尋找不同顏色的含義。純粹的裝飾色彩會(huì)將人們的注意力從圖形本身所要表達(dá)的信息引開(kāi)运挫。用彩色數(shù)據(jù)圖形還會(huì)有一個(gè)不太重要但也不能忽略的問(wèn)題:一小部分人是色盲状共,而這部分人的數(shù)量也不在少數(shù)。

若要在繪圖函數(shù)中使用彩色谁帕,可通過(guò)下面這些選項(xiàng)集來(lái)實(shí)現(xiàn):

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

col.axis=坐標(biāo)軸的顏色

col.lab=坐標(biāo)軸標(biāo)簽的顏色

col.main=主標(biāo)題顏色

col.sub=副標(biāo)題顏色

fg= 圖形的前景色

bg= 圖形的背景色

顏色可通過(guò)代碼值來(lái)指定匈挖。例如col=25會(huì)得到藍(lán)色碾牌。在控制臺(tái)執(zhí)行colors()函數(shù)就可知R能識(shí)別657種顏色,為了方便起見(jiàn)儡循,會(huì)列出657顏色名稱(chēng)舶吗,這些名稱(chēng)能被R識(shí)別。所以择膝,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"

當(dāng)然有些時(shí)候我們需要在圖形上繪制獨(dú)立的點(diǎn),線或者文本等,這些都不是繪圖函數(shù)的參數(shù)腹侣,需要獨(dú)立的函數(shù)來(lái)支撐叔收,我們下一節(jié)就為大家來(lái)介紹這些。

參考資料:

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

2. 《R語(yǔ)言初學(xué)者指南》 人民郵電出版社? Brian Dennis著

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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傲隶,一起剝皮案震驚了整個(gè)濱河市饺律,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌伦籍,老刑警劉巖蓝晒,帶你破解...
    沈念sama閱讀 206,126評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件腮出,死亡現(xiàn)場(chǎng)離奇詭異帖鸦,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)胚嘲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)作儿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人馋劈,你說(shuō)我怎么就攤上這事攻锰。” “怎么了妓雾?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,445評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵娶吞,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我械姻,道長(zhǎng)妒蛇,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,185評(píng)論 1 278
  • 正文 為了忘掉前任楷拳,我火速辦了婚禮绣夺,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘欢揖。我一直安慰自己陶耍,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,178評(píng)論 5 371
  • 文/花漫 我一把揭開(kāi)白布她混。 她就那樣靜靜地躺著烈钞,像睡著了一般。 火紅的嫁衣襯著肌膚如雪坤按。 梳的紋絲不亂的頭發(fā)上毯欣,一...
    開(kāi)封第一講書(shū)人閱讀 48,970評(píng)論 1 284
  • 那天,我揣著相機(jī)與錄音晋涣,去河邊找鬼仪媒。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的算吩。 我是一名探鬼主播留凭,決...
    沈念sama閱讀 38,276評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼偎巢!你這毒婦竟也來(lái)了蔼夜?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 36,927評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤压昼,失蹤者是張志新(化名)和其女友劉穎求冷,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體窍霞,經(jīng)...
    沈念sama閱讀 43,400評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡匠题,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,883評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了但金。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片韭山。...
    茶點(diǎn)故事閱讀 37,997評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖冷溃,靈堂內(nèi)的尸體忽然破棺而出钱磅,到底是詐尸還是另有隱情,我是刑警寧澤似枕,帶...
    沈念sama閱讀 33,646評(píng)論 4 322
  • 正文 年R本政府宣布盖淡,位于F島的核電站,受9級(jí)特大地震影響凿歼,放射性物質(zhì)發(fā)生泄漏褪迟。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,213評(píng)論 3 307
  • 文/蒙蒙 一毅往、第九天 我趴在偏房一處隱蔽的房頂上張望牵咙。 院中可真熱鬧,春花似錦攀唯、人聲如沸洁桌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,204評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)另凌。三九已至,卻和暖如春戒幔,著一層夾襖步出監(jiān)牢的瞬間吠谢,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,423評(píng)論 1 260
  • 我被黑心中介騙來(lái)泰國(guó)打工诗茎, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留工坊,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,423評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像王污,于是被迫代替她去往敵國(guó)和親罢吃。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,722評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容