R語言實戰之圖形初階(三)
控制圖形維度
3.1使用圖形R是一個驚艷的圖形構建平台,在交互會話中,可以逐條輸入語句構建圖形,逐漸完善圖形特徵。> attach(mtcars)n> plot(wt,mpg)n> abline(lm(mpg~wt))n> title("Regression of MPG on Weight")n> detach(mtcars)n
>attach(mtcars) 綁定了數據框mtcars
>plot(wt,mpg)打開了一個窗口並生成了一個散點圖,橫軸表示wt,車身重量,縱軸表示每加侖有行駛 的英里數。>abline(lm(mpg~wt))向圖添加了一條最優擬合曲線。>title("Regression of MPG on Weight")添加了標題>detach(mtcars)為數據解除數據框。以下代碼可以將圖形保存到目錄名為mygraph.dpf的PDF文件中:> pdf("mygraph.pdf")n> attach(mtcars)n> plot(wt,mpg)n> abline(lm(mpg~wt))n> title("Regression of MPG on Weight")n> detach(mtcars)n> dev.off()n
通常執行plot()、hist()和boxplot()這樣的高級圖形命令來創建一副新圖形時候,通常會覆蓋之前的圖形。創建多個圖形的方法如下:
- 在創建一幅新圖形的之前打開一個新的圖形窗口:
dev.new()nstatements to create graph1ndev.new()nstatements to create graph2netc.n
2.可以通過圖形用戶界面來查看多個圖形。
在windows上,(1)打開第一個圖形窗口以後,勾選 histor>recording;(2)使用菜單的previous>next 逐個查看已經繪製的圖形。3.使用dev.new() 、dev.nexr() 、 dev.pre() 、dev.set() 、dev.off()同時打開多個圖形窗口,選擇將哪個輸出發送到哪個窗口。我們可以指定圖形的字體,顏色,坐標軸等,靈活度使得我們實現高度定製。3。2一個簡單的例子> dose<-c(20,30,40,45,60)n> drugA<-c(16,20,27,40,60)n> drugB<-c(15,18,25,31,40)n> plot(dose,drugA,type="b")n
藥物A劑量響應的點線圖
plot()函數是R中的一個泛型函數(它的輸出將根據所繪製對象類型的不同而變化)plot(x,y,type="b")將y置於縱軸,x橫軸,繪製點集(x,y)。type="b"表示同時繪製點和線。
3。3圖形參數通過改 圖形參數 的選項來自定義一副圖形的多個特徵。通過函數par()完成,格式為par(optionname=value,optionname=name,...)n
假設我們點符號使用實心三角,虛線代替實線,命令如下:
> opar<-par(no.readonly = TRUE) #複製當前的圖形參數設置n> par(lty=2,pch=17) #將默認線條改為虛線,符號改為實心三角n> plot(dose,drugA,type="b")n> par(opar)n
> plot(dose,drugA,type="b",lty=2,pch=17)n
3。3。1符號與線條
指定符號和線條類型的參數pch 繪製點的符號cex 指定符號大小。(默認值為1)
lty 指定線條類型lwd 指定線條寬度(默認值為1)應用:> plot(dose,drugA,type = "b",lty=3,lwd=3,pch=15,cex=2)n
col.labtt坐標軸標籤顏色
col.maintt標題顏色col.subtt副標題顏色fgttt圖形前景色bgttt圖形的背景色gray(0:10/10)將生成10階灰度色。代碼:> n<-10n> mycolors<-rainbow(n)n> pie(rep(1,n),labels = mycolors,col=mycolors)n
> n<-10n> mygrays<-gray(0:n/n)n> pie(rep(1,n),labels = mygrays,col=mygrays)n
圖形參數同樣可以用來指定字型大小、字體、和字樣。
例如:> par(font.lab=3,cex.lab=1.5,font.main=4,cex.main=2)n
創建斜體、1.5倍於默認文本大小的坐標軸標籤的名稱,以及粗體斜體,2倍於默認文本大小的標題
3。3。4圖形尺寸和圖形邊界pin 以英寸表示圖形的尺寸mai 以數值表示邊界大小(單位 )使用之前所學的所有的選項來強化之前的簡單的圖形示例:代碼3-1 使用圖形參數控制圖形外觀> dose<-c(20,30,40,45,60)n> drugA<-c(16,20,27,40,46)n> drugB<-c(15,18,25,31,40)n> opar<-par(no.readonly = TRUE)n> par(pin=c(2,3))n> par(cex.axis=.75,font.axis=3)n> plot(dose,drugA,type = "b",pch=19,lty=2,col="red")n> plot(dose,drugB,type = "b",pch=23,lty=23,col="blue",bg="green")n> par(opar)n
3。4添加文本、自定義坐標軸和圖例
除了圖形參數,很多的高級繪圖函數(plot、 hist 、boxplot)也允許自行設定坐標軸和文本標註選項。以下代碼添加了,標題(main),副標題(sub),坐標軸標籤(xlab ylab)並指定了坐標軸範圍(xlim,ylim)> plot(dose,drugA,type="b",col="red",lty=2,pch=2,lwd=2, main="Clinical Trials for Drug A",n+ sub="This is hypothetical data", xlab="Dosage",ylab="Drug Response",n+ xlim=c(0,60),ylim=c(0,70))n
title(main="main title",sub="sub-titles",xlab="x-axis label",ylab="y-axis label")n
3。4。2坐標軸
你可以使用函數axis( )來創建自定義的坐標軸,而非使用R中的默認坐標軸,格式:axis(side,at=,labels=,pos=,lty=,col=,las=,tck=,...)n
col:線條和刻度線顏色
las:標籤是否平行(=0)或垂直於(=2)坐標軸tck:刻度線的長度,以相對於繪製區域大小的額分數表示代碼3-2 自定義坐標軸的示例y<-c(1:10)ny<-xnz<-10/xnnopar<-par(no.readonly = TRUE)nnpar(mar=c(5,4,4,8)+0.1)nnplot(x,y,type="b",pch=21,col="red",yaxt="n",lty=3,ann=FALSE)nnlines(x,z,type = "b",pch=22,col="blue",lty=2)nnaxis(2,at=x,labels = x,col.axis="red",las=2)nnaxis(4,at=z,labels = round(z,digits = 2),col.axis="blue",las=2,cex.axis=0.7,tck=-.01)nnmtext("y=1/x",side=4,line = 3,cex.lab=1,las=2,col="blue")nntitle("An Example of Creative Axes",xlab="X values",ylab="Y=X")nnpar(opar)n
- 次要刻度線
創建次要刻度線,需要使用Hmisc包中的minor.tick()函數。
3。4。3參考線函數abline()可以用來為圖形的添加參考線。格式:abline(h=yvalues,v=xvalues)n
abline=(h=c(1,5,7))n
legend(location,title,legend,...)n
dose<-c(20,30,40,45,60)ndrugA<-c(16,20,27,40,60)ndrugB<-c(15,18,25,31,40)nnopar<-par(no.readonly = TRUE)nnpar(lwd=2,cex=1.5,font.lab=2)nnplot(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")nnlines(dose,drugB,type="b",pch=17,lty=2,col="blue")nnabline(h=c(30),lwd=1.5,lty=2,col="gray")nnlibrary(Hmisc)nminor.tick(nx=3,ny=3,tick.ratio = 0.5)nnlegend("topleft",inset = .05,title = "Drug Type",c("A","B"),lty=c(1,2),pch=c(15,17),col=c("red","blue"))nnpar(opar)n
text(location,"text to place",pos,...)nmtext("text to place",side,line=n,...)n
attach(mtcars)nplot(wt,mpg,main="Mileage vs.Car Weight",xlab = "Weight",ylab = "Mileage",pch=18,col="blue")ntext(wt,mpg,row.names(mtcars),cex = 0.6,pos = 4,col="red")ndetach(mtcars)n
opar<-par(no.readonly = TRUE)npar(cex=1.5)nplot(1:7,1:7,type = "n")ntext(3,3,"Example of default text")ntext(4,4,family="mono","Example of mono-spaced text")ntext(5,5,family="serif","Example of serif text")npar(opar)n
attach(mtcars)nopar<-par(no.readonly = TRUE)npar(mfrow=c(2,2))nplot(wt,mpg,main="Scatterplot of wt vs.mpg")nplot(wt,disp,main="Scatterplot of wt vs disp")nhist(wt,main = "Histogram of wt")nboxplot(wt,main="Boxplot of wt")npar(opar)ndetach(mtcars)n
attach(mtcars)nopar<-par(no.readonly = TRUE)npar(mfrow=c(3,1))nhist(wt)nhist(mpg)nhist(disp)npar(opar)ndetach(mtcars)n
attach(mtcars)nlayout(matrix(c(1,1,2,3),2,2,byrow = TRUE))nhist(wt)nhist(mpg)nhist(disp)ndetach(mtcars)n
attach(mtcars)nlayout(matrix(c(1,1,2,3),2,2,byrow=TRUE),widths=c(3,1),heights=c(1,2))nhist(wt)nhist(mpg)nhist(disp)ndetach(mtcars)n
- 圖形布局的精細控制
使用fig=對圖形布局實現精細的控制能力
代碼3-4 多幅圖形布局的精細控制opar<-par(no.readonly = TRUE)npar(fig=c(0,0.8,0,0.8)) #設置散點圖nplot(mtcars$wt,mtcars$mpg,xlab = "Miles Per Gallon",ylab = "Car Weight")npar(fig=c(0,0.8,0.55,1),new=TRUE)t#在上方添加箱線圖nboxplot(mtcars$mpg,axes=FALSE)t #在右上方添加箱線圖nnmtext("Enhanced Scatterplot",side = 3,outer=TRUE,line = -3)npar(opar)n
聲明:
以上筆記來自
《R語言實戰》 【美】Robert I.Kabacoff 著 高濤 肖楠 陳鋼 譯 人民郵電出版社
推薦閱讀:
※有哪些數據分析師的博客或網站值得推薦?
※折線+柱狀=雙軸圖?原來如此簡單、直觀!
※老闆找你談心怎麼辦?
※現在是否有社會化媒體營銷的數據分析工具?
※一文教你輕鬆上手數據分析神器,從此變身數據達人!