R語言實戰—03圖形初階
dev.new( )
statements to create graph 1dev.new( )statements to create graph2etc.第二種方法:MAC系統:Quartz菜單—「Back」和「Forward"Windows系統: 勾選「歷史」History—「記錄」Recording。然後使用Previous和Next。第三種方法:函數dev.new( )、dev.next( )、dev.prev( )、dev.set( )、dev.off( )3.2 簡單例子plot(x,y,type="b"):x為橫軸,y為縱軸,繪製點擊(x,y),type="b"表示同時繪製點和線。
#3.2簡單的一個例子#描述病人對兩種藥物五個劑量的響應情況dose <- c(20,30,40,45,60)drugA <- c(16,20,27,40,60)drugB <- c(15,18,25,31,40)plot(dose,drugA,type = "b")title("藥物A的劑量和響應關係")par(family="PingFangSC-Regular")
- "p" for points,
- "l" for lines,
- "b" for both,
- "c" for the lines part alone of "b",
- "o" for both 『overplotted』,
- "h" for 『histogram』 like (or 『high-density』) vertical lines,
- "s" for stair steps,
- "S" for other steps, see 『Details』 below,
- "n" for no plotting.
3.3 圖形參數
調用格式:par(optionname=value,optionname=name,…)
no.readonly=TRUE:生成當前圖形參數列表。
#修改點的符號opar <- par(no.readonly = TRUE)par(lty=2,pch=17)plot(dose,drugA,type = "b")par(opar)#另一種方法:plot(dose,drugA,type = "b",lty=2,pch=17)
- pch:指定繪製點使用的符號。
- cex:指定符號的大小。
- lty:指定線條類型。
- lwd:指定線條寬度。
- col:默認的繪圖顏色。
- col.axis:坐標軸刻度文字的顏色。
- col.lab:坐標軸標籤的顏色。
- col.main:標題顏色。
- col.sub:副標題顏色。
- fg:圖形的前景色。
- bg:圖形的背景色。
rainhbow( )、heat.colors( )、terrain.colors( )、topo.colors( )、cm.colors( ):創建連續型顏色。
brewer.pal(n,name):創建一個顏色值的向量。http://brewer.pal.info或者display.brewer.all():查看所有可選調色板的列表#生成10階灰色度n <- 10mycolors <- rainbow(n)pie(rep(1,n),labels = mycolors,col = mycolors)#生成10階色度mygrays <- gray(0:10/10)pie(rep(1,n),labels = mygrays,col = mygrays)
- cex:表示相對默認大小縮放倍數的數值。默認為1。
- cex.axis:坐標軸刻度文字的縮放倍數。
- cex.lab:坐標軸標籤的縮放倍數。
- cex.main:標題的縮放倍數。
- cex.sub:副標題的縮放倍數。
用於指定字體族、字型大小和字樣的參數:
- font:整數。用於指定繪圖使用的字體樣式。1=常規,2=粗體,3=斜體,4=粗斜體,5=符號字體
- font.axis:坐標軸刻度文字的字體。
- font.lab:坐標軸標籤的字體。
- font.main:標題的字體。
- font.sub:副標題的字體。
- ps:字體磅值。
- family:繪製文本事使用的字體族。標準取值為:serif(襯線)、sans(無襯線)和mono(等寬)。
3.3.4 圖形尺寸與邊界尺寸
- pin:以英寸表示圖形尺寸(寬和高)。
- mai:以數值向量表示的邊界大小(順序:下、左、上、右,單位為英寸)。
- mar:以數值向量表示的邊界大小。(單位為英分,默認值為c(5,4,4,2)+0.1)
綜合實例:#3.3.3 綜合控制圖形外觀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(pin=c(2, 3))par(lwd=2, cex=1.5)par(cex.axis=.75,font.axis=3)plot(dose, drugA, type="b", pch=19, lty=2, col="red")plot(dose, drugB, type="b", pch=23, lty=6, col="blue", bg="green")par(opar)
調用格式:
title(main="main title",sub="subtitle",xlab="x-axis label",ylab="y-axis label")
註:ann=FALSE移除圖形中默認的標題和標籤。
3.4.2 坐標軸
格式為:
axis(side, at=, labels=, pos=, lty=, col=, las=, tck=, …)
- side:一個整數,表示在圖形的那邊繪製坐標軸。(下,左,上,右)
- at:一個數值型向量,表示需要繪製刻度線的位置。
- labels:一個字元型向量,表示置於刻度線旁邊的文字標籤(NULL,表示直接使用at中的值)
- pos:坐標軸線繪製位置的坐標。
- lty:線條類型。
- col:線條和刻度線顏色。
- las:標籤是否平行於(=0)或垂直(=2)坐標軸。
- tck:刻度線的長度。
註:axes=FALSE將禁止用全部坐標軸。
參數xaxt="n"和yaxt="n"將分別禁用X軸和Y軸。#3.4.2自定義坐標軸示例x <- c(1:10)y <- xz <- 10/xopar <- par(no.readonly = TRUE)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)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=-.01)mtext("y=1/x",side = 4,line = 3,cex.lab=1,las=2,col="blue")title("An Example of Creative Axes", xlab = "X values", ylab = "Y=X")par(opar)
格式如:minor.tick(nx=n,ny=n,tick.ratio=n)
- nx和ny:分別表示X軸和Y軸每兩條主刻度線之間通過次要刻度線劃分得到的區間個數。
- tick.ratio:表示次要刻度線相對於主刻度線的大小比例。
3.4.3 參考線
格式如:abline(h=yvalues,v=xvalues)
3.4.4 圖例
格式如:legend(location,title,legend,…)
- location:指定圖例的位置。
- title:圖例標題的字元串。
- legend:圖例標籤組成的字元型向量。
- horiz=TRUE將會水平放置圖例。
#3.4.4圖例代碼練習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. drugB", xlab="Drug Dosage",ylab="Drug Response")lines(dose,drugB,type = "b", pch=17,lty=2,col="blue") #添加輔助線abline(h=c(30),lwd=1.5,lty=2,col="gray")#創建次要刻度library(Hmisc)minor.tick(nx=3,ny=3,tick.ratio=0.5)legend("topleft",inset = .05,title = "Drug Type",c("A","B"), lty = c(1,2),pch=c(15,17),col=c("red","blue"))par(opar)
格式為:
text(location,"text to place",pos,…)mtext("text to place",side,line=n,…)
- location:文本的位置參數。
- pos:文本相對於位置參數的方位。1=下,2=左,3=上,4=右。offset=作為偏移量,以相對於單個字元寬度的比例表示。
- side:指定用來放置文本的邊。line=來內移或外移文本。adj=0將文本向左下對齊,adj=1右上對齊。
3.4.6 數字標註
3.5 圖形的組合R中使用函數par( )或layout( )組合多幅圖形為一個幅總括圖形。par( )中使用圖形參數mfrow=c(nrows,ncols),來創建按行填充的、行數為nrows、列數為ncols的圖形矩陣。layout( )的調用形式為layout(mat),mat是一個矩陣,它指定了所要組合的多個圖形的所在位置。
- widths= 各列寬度值組成的一個向量
- heights= 各行寬度值組成的一個向量
#控制圖形的大小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)
#圖形布局的精細控制opar <- par(no.readonly = TRUE)par(fig=c(0,0.8,0,0.8))plot(mtcars$wt,mtcars$mpg, xlab="Mile Per Gallon", ylab="Car Weight")par(fig=c(0,0.8,0.55,1),new=TRUE)boxplot(mtcars$wt,horizontal = TRUE,axes= FALSE)par(fig=c(0.65,1,0,0.8),new=TRUE)boxplot(mtcars$mpg,axes=FALSE)mtext("Enhanced Scatterplot",side = 3,outer = TRUE,line = -3)par(opar)
2017年03月22日
作者:壹亮3278(微信號:yiliang3278),移動互聯網產品設計、產品經理,數據分析的學習者。不斷自我迭代,自我升級,希望和知識愛好者共同進步,讓我們用成長去遇見美好的未來!!!
————「自律是成功的基石。」————
----------------------------------------------------------------------------------------------------------
《數據分析學習之路系列》系列大數據之數據分析精進之路:起跑 - 知乎專欄00-R語言的認識、下載和安裝 - 知乎專欄01-R語言入門 - 知乎專欄02-創建數據集 - 知乎專欄第二講 數據結構入門實戰練習 - 知乎專欄推薦閱讀:
※RDD論文翻譯:基於內存的集群計算容錯抽象
※大數據計數原理1+0=1這你都不會算(二)No.50
※HDFS中的Namenode和Datanode
※扯個關於大數據的淡
※大數據計數原理1+0=1這你都不會算(四)No.52