R語言學(xué)習(xí)筆記(五)繪圖(1)

??R是一個(gè)驚艷的圖形構(gòu)建平臺(tái)奋单,這也是R語言的強(qiáng)大之處吞琐。本文將分享R語言簡單的繪圖命令。

??本文所使用的數(shù)據(jù)或者來自R語言自帶的數(shù)據(jù)(mtcars)或者自行創(chuàng)建守伸。

??首先,讓我們來看一個(gè)簡單例子:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
plot(dose, drugA)

繪制的圖形如下:

簡單例子

??我們有必要對(duì)上述代碼做些說明:首句和第二條語句創(chuàng)建兩個(gè)向量浦妄,第三條語句打開一個(gè)圖形窗口并生成一幅散點(diǎn)圖尼摹。

??這也許是個(gè)極為簡單的例子,因?yàn)椴]有涉及到太多其他關(guān)于圖形參數(shù)(如符號(hào)與線條剂娄,顏色蠢涝,文本屬性,圖形尺寸和邊界大小等)方面的知識(shí)阅懦。接下來和二,我們將在此基礎(chǔ)上講講圖形參數(shù)的設(shè)置。

1.1 符號(hào)與線條

if(FALSE){該例展示如何利用par函數(shù)修改圖形參數(shù)}
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
if(FALSE){no.readonly=TRUE可以生成一個(gè)可以修改的當(dāng)前圖形參數(shù)列表}
opar <- par(no.readonly = TRUE)
if(FALSE){虛線+實(shí)三角}
par(lty=2, pch=17)
if(FALSE){b表示繪制點(diǎn)和線}
plot(dose, drugA, type="b")
par(opar)

繪制的圖形如下:

圖形參數(shù):符號(hào)與線條

上述代碼中的圖形參數(shù)設(shè)置也可以通過鍵值對(duì)來實(shí)現(xiàn)耳胎,并不需要par()函數(shù)惯吕,如下:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
plot(dose, drugA, type="b",lty=2,pch=17)

??可以設(shè)置的符號(hào)和線條的參數(shù)有:

  • pch:繪制點(diǎn)時(shí)使用的符號(hào)(范圍:0~25);
  • cex:繪制符號(hào)的大信挛纭(默認(rèn)值為1)废登;
  • lty:線條類型(范圍1~6);
  • lwd:線條寬度(默認(rèn)值為1)郁惜;

1.2 顏色

??R語言圖形的顏色參數(shù)常用如下:

  • col:默認(rèn)繪圖顏色堡距;
  • col.axis:坐標(biāo)軸刻度文字的顏色;
  • col.lab:坐標(biāo)軸標(biāo)簽的顏色;
  • col.main:標(biāo)題的顏色吏颖;
  • col.sub:副標(biāo)題的顏色搔体;
  • fg:圖形的前景色;
  • bg:圖形的背景色半醉;

??在R中疚俱,可以通過顏色下標(biāo)、顏色名稱缩多、十六進(jìn)制的顏色值呆奕、RGB值或HSV值來指定顏色。例如衬吆,col=1,col="white",col="#FFFFFF",col=rgb(1,1,1)和col=hsv(0,0,1)都表示白色梁钾。

??示例代碼:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
opar <- par(no.readonly = TRUE)
par(lty=2,pch=17,col.axis=2,fg=rgb(0,0,1),bg='gray')
plot(dose,drugA,type="b")
par(opar)

繪制的圖形如下:

圖形參數(shù):顏色

1.3 文本屬性

??R語言圖形的文本大小參數(shù)如下:

  • cex:相對(duì)于默認(rèn)大小縮放倍數(shù)的數(shù)值;
  • cex.axis:坐標(biāo)軸刻度文字的縮放倍數(shù)逊抡;
  • cex.lab:坐標(biāo)軸標(biāo)簽的縮放倍數(shù)姆泻;
  • cex.main:標(biāo)題的縮放倍數(shù);
  • cex.sub:副標(biāo)題的縮放倍數(shù)冒嫡;

??R語言圖形的字體族拇勃、字號(hào)和字樣的參數(shù)如下:

  • font:繪圖時(shí)使用的字體樣式(整數(shù),范圍:1~5)孝凌;
  • font.axis:坐標(biāo)軸刻度文字的字體樣式方咆;
  • font.lab:坐標(biāo)軸標(biāo)簽的字體樣式;
  • font.main:標(biāo)題的字體樣式蟀架;
  • font.sub:副標(biāo)題的字體樣式瓣赂;
  • ps:字體磅數(shù)(最終大小為:ps*cex)
  • family:繪制文本時(shí)使用的字體族;

??示例代碼:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
opar <- par(no.readonly = TRUE)
par(lty=2,pch=17,cex.axis=2, font.lab=4 )
plot(dose,drugA,type="b")
par(opar)

繪制的圖形如下:

圖形參數(shù):文本屬性

1.4 圖形尺寸和邊界大小

??R語言圖形的控制圖形尺寸和邊界大小參數(shù)如下:

  • pin:以英寸表示的圖形尺寸(寬和高)片拍;
  • mai:數(shù)值向量表示邊界大小煌集,順序?yàn)椤跋伦笊嫌摇保瑔挝粸橛⒋纾?/li>
  • mar:數(shù)值向量表示邊界大小捌省,順序?yàn)椤跋伦笊嫌摇毖揽保瑔挝粸橛⒎郑?/li>

??示例代碼:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
opar <- par(no.readonly = TRUE)
par(pin=c(3,2))
plot(dose,drugA,type="b")
par(opar)

繪制的圖形如下:

圖形參數(shù):圖形尺寸和邊界大小
圖形參數(shù):圖形尺寸和邊界大小

??接下來的部分雖然不屬于圖形參數(shù),但對(duì)于圖形來說依然十分重要所禀!為了保持?jǐn)⑹隽鲿常瑢⒀赜蒙厦娴男蛱?hào)放钦。

1.5 坐標(biāo)軸色徘、標(biāo)題

??R語言的圖形坐標(biāo)軸選項(xiàng)如下:

  • xlab:x軸標(biāo)簽;
  • ylab:y軸標(biāo)簽操禀;
  • xlim:x軸范圍褂策;
  • ylim:y軸范圍;

??標(biāo)題選項(xiàng)如下:

  • main:主標(biāo)題;
  • sub:副標(biāo)題斤寂;
  • title():函數(shù)耿焊,可添加坐標(biāo)軸標(biāo)簽和標(biāo)題;

??示例代碼:

dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
plot(dose,drugA,type="b",
     xlab='x:dose',ylab='y:drugA',
     xlim=c(20,60),ylim=c(15,60),
     main='drugA over dose',sub='As exmaple')

繪制的圖形如下:

坐標(biāo)軸遍搞、標(biāo)題
坐標(biāo)軸罗侯、標(biāo)題

1.6 自定義坐標(biāo)軸、文本標(biāo)注溪猿、參考線

??自定義坐標(biāo)軸(axis)的參數(shù)如下:

  • side:1=下钩杰,2=左,3=上诊县,4=右讲弄;
  • at:數(shù)值型向量,表示繪制刻度線的位置依痊;
  • labels:字符型向量避除,表示刻度線旁邊的文字標(biāo)簽;
  • pos:坐標(biāo)軸線繪制位置的坐標(biāo)胸嘁;
  • lty:線條類型瓶摆;
  • col:線條和刻度線的顏色;
  • las:標(biāo)簽是否平行于(=0)或垂直于(=2)坐標(biāo)軸
  • tck:刻度線的長度缴渊;
  • ...

??R語言的文本標(biāo)注有text()和mtext(),其中text()可向繪圖區(qū)域內(nèi)部添加文本赏壹,mtext()則向圖形的四個(gè)邊界之一添加文本,它們的參數(shù)如下

  • location:文本的位置參數(shù)衔沼,可用(x,y)坐標(biāo)蝌借,也可交互式添加;
  • pos:文本相對(duì)于位置參數(shù)的方位指蚁,1=下菩佑,2=左,3=上凝化,4=右稍坯;
  • side:放置文本的邊,1=下搓劫,2=左瞧哟,3=上,4=右枪向;

其他常用的選項(xiàng)有cex,col和font(分別來調(diào)整字號(hào)勤揩、顏色和字體樣式)。R語言還支持?jǐn)?shù)學(xué)標(biāo)注秘蛔,標(biāo)注語法類似于Tex.

??參考線的函數(shù)為abline(),語法為:

abline(h=yvalues, v=xvalues)

abline()中也可以指定其它圖形參數(shù)陨亡,如線條類型傍衡、顏色和寬度。

??示例代碼:

x <- c(1:10)
y <- x
z <- 10/x
opar <- par(no.readonly = TRUE)
if(FALSE){邊界大小}
par(mar=c(5,4,4,8)+0.1)
plot(x,y,type="b",pch=21,col="red",yaxt="n",lty=3,ann = FALSE)
lines(x,z,type="b",pch=22,col="blue",lty=2)
if(FALSE){自定義坐標(biāo)軸}
axis(2,at=x,labels=x,col.axis="red",las=2)
axis(4,at=z,labels=round(z,digits=2),col.axis="blue",las=2,cex.axis=0.7,tck=-0.01)
if(FALSE){文本標(biāo)注}
mtext("y=10/x",side=4,line=3,cex.lab=1,las=2,col="blue")
if(FALSE){標(biāo)題+坐標(biāo)軸標(biāo)簽}
title("An Example of Creative Axes", xlab="X values",ylab="Y=X")
if(FALSE){參考線}
abline(h=seq(1,10,2), lty=2, col="blue")
par(opar)

繪制的圖形如下:

自定義坐標(biāo)軸负蠕、文本標(biāo)注蛙埂、參考線

1.7 圖例

??R語言中的圖例函數(shù)為legend(),參數(shù)如下:

  • location:指定(x,y)坐標(biāo),或使用關(guān)鍵字(如:topleft)遮糖,或交互式指定位置绣的;
  • title:圖例標(biāo)題的字符串(可選);
  • legend:圖例標(biāo)簽組成的字符型向量;
  • ...

其它選項(xiàng)還包括:指定盒子樣式的bty,背景色:bg,大小:cex止吁,文本顏色:text.col等被辑。

??示例代碼如下:

dose <- c(20,30,40,45,60)
drugA <- c(16,20,27,40,60)
drugB <- c(15,18,25,31,40)
opar <- par(no.readonly = TRUE)
par(lwd=2, cex=1.5, font.lab=2)
plot(dose,drugA,type="b",pch=15,lty=1,col="red",ylim=c(0,60),
     main="Drug A vs. Drug B",xlab="Drug Dosage",ylab="Drug Response")
lines(dose,drugB,type="b",pch=17,lty=2,col="blue")
legend("topleft",inset=.05,title="Drug Type",c("A","B"),lty=c(1,2),pch=c(15,17),col=c("red","blue"))
par(opar)

繪制的圖形如下:

圖例

1.8圖形的組合

??在R語言中,可用函數(shù)par()或layout()組合多幅圖形為一幅總括圖形敬惦。在par()函數(shù)中可用mfrow=c(nrows,ncols)來創(chuàng)建按行填充的盼理、行數(shù)為nrows、列數(shù)為ncols的圖形矩陣俄删。layout()的調(diào)用形式為layout(mat)宏怔,其中mat為矩陣,制定了組合的多個(gè)圖形的所在位置畴椰,可以跨行或跨列臊诊。

??示例代碼1如下:

attach(mtcars)
opar <- par(no.readonly = TRUE)
par(mfrow=c(2,2))
plot(wt,mpg,main="scatterplot of wt vs. mpg")
plot(wt,disp,main="scatterplot of wt vs. disp")
hist(wt,main="Histogram of wt")
boxplot(wt,main="boxplot of wt")
par(opar)
detach(mtcars)

??繪制的圖形如下:

圖形的組合1

??示例代碼2如下:

attach(mtcars)
layout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths = c(3,1),heights = c(1,2))
hist(wt)
hist(mpg)
hist(disp)
detach(mtcars)

??繪制的圖形如下:

圖形的組合2

??以上的內(nèi)容參考自《R語言實(shí)戰(zhàn)》。關(guān)于圖形的設(shè)置就講到這兒了斜脂,終于可以舒一口氣了~~下面我們將嘗試著自己來繪制圖形抓艳。
??我們將要繪制的圖形來自于:http://www.runoob.com/try/try.php?filename=HighchartsTest ,這個(gè)圖形使用HighCharts繪制的,我們將用R語言來繪制這個(gè)圖形帚戳。代碼如下:

x <- seq(1,12)
months <- c('一月','二月','三月','四月','五月','六月','七月','八月','九月','十月','十一月','十二月')
Tokyo <- c(7.0,6.9,9.5,14.5,18.2,21.5,25.2,26.5,23.3,18.3,13.9,9.6)
New_York <- c(-.2,.8,5.7,11.3,17.0,22.0,24.8,24.1,20.1,14.1,8.6,2.5)
Berlin <- c(-.9,.6,3.5,8.4,13.5,17.0,18.6,17.9,14.3,9.0,3.9,1.0)
London <- c(3.9,4.2,5.7,8.5,11.9,15.2,17.0,16.6,14.2,10.3,6.6,4.8)
opar <- par(no.readonly = TRUE)
par(bty="n")
plot(Tokyo,xaxt="n",pch=19,type="b",lwd=2,
     main="月平均氣溫",sub="Plotted by R Language",
     ylim=c(-10,30),col="blue",xlab="",ylab="Temperature(℃)",axes=FALSE)
lines(New_York,type="b",pch=18,col="black",lwd=2)
lines(Berlin,type="b",pch=15,col="green",lwd=2)
lines(London,type="b",pch=17,col="orange",lwd=2)
axis(2,at=seq(-10,30,10),tick=F)
axis(1,at=x,labels=months,las=2)
abline(h=c(0,10,20,30),col="gray")
legend("topright",c("Tokyo","New York","Berlin","London"),pch=c(19,18,15,17),
       col=c("blue","black","green","orange"),bty="n")
par(opar)

繪制的圖形如下:

模擬HighCharts的繪圖

??本次分享到此結(jié)束玷或,歡迎大家交流~~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市片任,隨后出現(xiàn)的幾起案子偏友,更是在濱河造成了極大的恐慌,老刑警劉巖对供,帶你破解...
    沈念sama閱讀 221,198評(píng)論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件位他,死亡現(xiàn)場離奇詭異,居然都是意外死亡产场,警方通過查閱死者的電腦和手機(jī)鹅髓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評(píng)論 3 398
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來京景,“玉大人迈勋,你說我怎么就攤上這事〈姿冢” “怎么了靡菇?”我有些...
    開封第一講書人閱讀 167,643評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長米愿。 經(jīng)常有香客問我厦凤,道長,這世上最難降的妖魔是什么育苟? 我笑而不...
    開封第一講書人閱讀 59,495評(píng)論 1 296
  • 正文 為了忘掉前任较鼓,我火速辦了婚禮,結(jié)果婚禮上违柏,老公的妹妹穿的比我還像新娘博烂。我一直安慰自己,他們只是感情好漱竖,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,502評(píng)論 6 397
  • 文/花漫 我一把揭開白布禽篱。 她就那樣靜靜地躺著,像睡著了一般馍惹。 火紅的嫁衣襯著肌膚如雪躺率。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評(píng)論 1 308
  • 那天万矾,我揣著相機(jī)與錄音悼吱,去河邊找鬼。 笑死良狈,一個(gè)胖子當(dāng)著我的面吹牛后添,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播薪丁,決...
    沈念sama閱讀 40,743評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼遇西,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼!你這毒婦竟也來了窥突?” 一聲冷哼從身側(cè)響起努溃,我...
    開封第一講書人閱讀 39,659評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阻问,沒想到半個(gè)月后梧税,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡称近,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,282評(píng)論 3 340
  • 正文 我和宋清朗相戀三年第队,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刨秆。...
    茶點(diǎn)故事閱讀 40,424評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡凳谦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出衡未,到底是詐尸還是另有隱情尸执,我是刑警寧澤家凯,帶...
    沈念sama閱讀 36,107評(píng)論 5 349
  • 正文 年R本政府宣布,位于F島的核電站如失,受9級(jí)特大地震影響绊诲,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜褪贵,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,789評(píng)論 3 333
  • 文/蒙蒙 一掂之、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧脆丁,春花似錦世舰、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評(píng)論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至晒夹,卻和暖如春裆馒,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背丐怯。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評(píng)論 1 271
  • 我被黑心中介騙來泰國打工喷好, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人读跷。 一個(gè)月前我還...
    沈念sama閱讀 48,798評(píng)論 3 376
  • 正文 我出身青樓梗搅,卻偏偏與公主長得像,于是被迫代替她去往敵國和親效览。 傳聞我的和親對(duì)象是個(gè)殘疾皇子无切,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,435評(píng)論 2 359