??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ù)設(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)
繪制的圖形如下:
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)
繪制的圖形如下:
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ù),但對(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')
繪制的圖形如下:
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)
繪制的圖形如下:
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)
??繪制的圖形如下:
??示例代碼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)
??繪制的圖形如下:
??以上的內(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)
繪制的圖形如下:
??本次分享到此結(jié)束玷或,歡迎大家交流~~