R是一個驚艷的圖形構建平台,這也是R語言的強大之處。本文將分享R語言簡單的繪圖命令。
本文所使用的數據或者來自R語言自帶的數據(mtcars)或者自行創建。
首先,讓我們來看一個簡單例子:
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
plot(dose, drugA)
繪制的圖形如下:
這也許是個極為簡單的例子,因為並沒有涉及到太多其他關於圖形參數(如符號與線條,顏色,文本屬性,圖形尺寸和邊界大小等)方面的知識。接下來,我們將在此基礎上講講圖形參數的設置。
1.1 符號與線條
if(FALSE){該例展示如何利用par函數修改圖形參數}
dose <- c(20, 30, 40, 45, 60)
drugA <- c(16,20,27,40,60)
if(FALSE){no.readonly=TRUE可以生成一個可以修改的當前圖形參數列表}
opar <- par(no.readonly = TRUE)
if(FALSE){虛線+實三角}
par(lty=2, pch=17)
if(FALSE){b表示繪制點和線}
plot(dose, drugA, type="b")
par(opar)
繪制的圖形如下:
```R dose <- c(20, 30, 40, 45, 60) drugA <- c(16,20,27,40,60) plot(dose, drugA, type="b",lty=2,pch=17) ``` 可以設置的符號和線條的參數有:
- pch:繪制點時使用的符號(范圍:0~25);
- cex:繪制符號的大小(默認值為1);
- lty:線條類型(范圍1~6);
- lwd:線條寬度(默認值為1);
1.2 顏色
R語言圖形的顏色參數常用如下:
- col:默認繪圖顏色;
- col.axis:坐標軸刻度文字的顏色;
- col.lab:坐標軸標簽的顏色;
- col.main:標題的顏色;
- col.sub:副標題的顏色;
- fg:圖形的前景色;
- bg:圖形的背景色;
在R中,可以通過顏色下標、顏色名稱、十六進制的顏色值、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語言圖形的文本大小參數如下:
- cex:相對於默認大小縮放倍數的數值;
- cex.axis:坐標軸刻度文字的縮放倍數;
- cex.lab:坐標軸標簽的縮放倍數;
- cex.main:標題的縮放倍數;
- cex.sub:副標題的縮放倍數;
- font:繪圖時使用的字體樣式(整數,范圍:1~5);
- font.axis:坐標軸刻度文字的字體樣式;
- font.lab:坐標軸標簽的字體樣式;
- font.main:標題的字體樣式;
- font.sub:副標題的字體樣式;
- ps:字體磅數(最終大小為:ps*cex)
- family:繪制文本時使用的字體族;
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語言圖形的控制圖形尺寸和邊界大小參數如下:
- pin:以英寸表示的圖形尺寸(寬和高);
- mai:數值向量表示邊界大小,順序為“下左上右”,單位為英寸;
- mar:數值向量表示邊界大小,順序為“下左上右”,單位為英分;
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)
繪制的圖形如下:
1.5 坐標軸、標題
R語言的圖形坐標軸選項如下:
- xlab:x軸標簽;
- ylab:y軸標簽;
- xlim:x軸范圍;
- ylim:y軸范圍;
- main:主標題;
- sub:副標題;
- title():函數,可添加坐標軸標簽和標題;
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 自定義坐標軸、文本標注、參考線
自定義坐標軸(axis)的參數如下:
- side:1=下,2=左,3=上,4=右;
- at:數值型向量,表示繪制刻度線的位置;
- labels:字符型向量,表示刻度線旁邊的文字標簽;
- pos:坐標軸線繪制位置的坐標;
- lty:線條類型;
- col:線條和刻度線的顏色;
- las:標簽是否平行於(=0)或垂直於(=2)坐標軸
- tck:刻度線的長度;
- ...
- location:文本的位置參數,可用(x,y)坐標,也可交互式添加;
- pos:文本相對於位置參數的方位,1=下,2=左,3=上,4=右。
- side:放置文本的邊,1=下,2=左,3=上,4=右;
參考線的函數為abline(),語法為:
abline(h=yvalues, v=xvalues)
abline()中也可以指定其它圖形參數,如線條類型、顏色和寬度。
示例代碼:
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){自定義坐標軸}
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){文本標注}
mtext("y=10/x",side=4,line=3,cex.lab=1,las=2,col="blue")
if(FALSE){標題+坐標軸標簽}
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語言中的圖例函數為legend(),參數如下:
- location:指定(x,y)坐標,或使用關鍵字(如:topleft),或交互式指定位置;
- title:圖例標題的字符串(可選);
- legend:圖例標簽組成的字符型向量;
- ...
示例代碼如下:
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語言中,可用函數par()或layout()組合多幅圖形為一幅總括圖形。在par()函數中可用mfrow=c(nrows,ncols)來創建按行填充的、行數為nrows、列數為ncols的圖形矩陣。layout()的調用形式為layout(mat),其中mat為矩陣,制定了組合的多個圖形的所在位置,可以跨行或跨列。
示例代碼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)
繪制的圖形如下:
以上的內容參考自《R語言實戰》。關於圖形的設置就講到這兒了,終於可以舒一口氣了~~下面我們將嘗試着自己來繪制圖形
我們將要繪制的圖形來自於:http://www.runoob.com/try/try.php?filename=HighchartsTest ,這個圖形使用HighCharts繪制的,我們將用R語言來繪制這個圖形。代碼如下:
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)
繪制的圖形如下:
本次分享到此結束,歡迎大家交流~~
