R語言實戰—03圖形初階

3.1 使用圖形

使用代碼保存圖形:

保存為PDF—pdf(filename),其它格式:win.metafile( ), png( ),jpeg( ),bmp( ),tiff( ),xfig( ),postcript( )

打開新的圖形窗口的方法:

第一種方法:

dev.new( )

statements to create graph 1

dev.new( )

statements to create graph2

etc.

第二種方法:

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)

3.3.1 符號和線條

  • pch:指定繪製點使用的符號。

  • cex:指定符號的大小。

  • lty:指定線條類型。

  • lwd:指定線條寬度。

3.3.2 顏色

  • col:默認的繪圖顏色。
  • col.axis:坐標軸刻度文字的顏色。
  • col.lab:坐標軸標籤的顏色。
  • col.main:標題顏色。
  • col.sub:副標題顏色。
  • fg:圖形的前景色。
  • bg:圖形的背景色。

可以採用顏色下標、顏色名稱、十六進位的顏色值、RGB色值、HSV值來表示。例:col=1,col="wihte",col="FFFFFF",col=rgb(1,1,1),col=hsv(0,0,1)colors( ):查看可用顏色的名稱。

rainhbow( )、heat.colors( )、terrain.colors( )、topo.colors( )、cm.colors( ):創建連續型顏色。

brewer.pal(n,name):創建一個顏色值的向量。

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)

3.3.3 文本屬性

用於指定文本大小的參數:

  • 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)

3.4 添加文本、自定義坐標軸和圖例

3.4.1 標題

調用格式:

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)

創建次要刻度線,先安裝Hmisc包,在使用minor.tick( )函數。

格式如: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)

3.4.5?? 文本標註

text( )和mtxet( )將文本添加到圖形上。

格式為:

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)

圖形布局的精細控制

圖形參數:fig=

#圖形布局的精細控制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

TAG:圖形 | 數據可視化 | 大數據 |