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"forpoints,
"l"forlines,
"b"forboth,
"c"for the lines part alone of"b",
"o"for both ‘overplotted’,
"h"for ‘histogram’ like (or ‘high-density’) vertical lines,
"s"for stairsteps,
"S"for othersteps, 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 <- 10
mycolors <- 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 <- x
z <- 10/x
opar <- 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語言入門
R語言實戰—02-創建數據集
第二講 數據結構入門實戰練習

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容