這一篇介紹par參數比較基礎的幾個參數用法,涉及顏色,字體,線條和符號,座標軸,添加圖例,組合做圖留到下一篇文章。
上一篇文章已經詳細的介紹了R語言可視化技術的基本做圖方法,參數的權限機制,並且已經舉了不少做圖的例子。但是貌似還有一些細節的地方沒有提及,比如如何控制做圖的顏色,大小以及比例,線條及點的形狀,座標軸,添加圖例,組合做圖等。這些看起來瑣碎並且麻煩的東西,在R語言中得到優雅的處理,你不必爲了一個線條或者圖形的位置而編寫什麼諸如for循環之類的東西,實際上你只需要修改一下參數即可。到底是什麼參數這麼厲害呢?
如果你沒有看上一篇文章,可以點擊這裏,或者你對R的可視化已經相當熟悉,可以直接往下看。
公共參數列表 par
還是先回憶一下R的權限機制。在R語言做圖中,可以簡單的通過配置參數達到想要的效果,但是參數有很多,有必要進行分類,避免濫用或浪費。比如有一些參數如顏色大小是可以通用的,被分到了par裏面,作爲公共參數集合;還有一些如座標軸就只能有類似plot這樣的函數保有,給別人人家也用不到那些啊。如果plot的座標軸要用顏色相關的屬性,那麼就可以直接去par中取來用就是了。如果title想用字體這個屬性,也可以去par中取。所以par理所當然的可以被稱爲公共參數列表了。
下面介紹一下par的參數以及用法。
顏色相關
先來看看和顏色相關的參數:
bg # 背景色
fg # 前景色
col # 顏色
bg和fg和含義一般編程語言中顏色的含義相同,下面舉例說明一下:
先看代碼:
opar<-par(no.readonly = TRUE)
x <- seq(1,10,length.out = 100) -5
y <- c(log(x[x>0]),log(abs(x[x<=0]))) #控制x大於0,看起來像乳房,怪數學
par(fg="red") #也可以寫成類似 #ffffff形式
par(bg="black")
plot(x,y,type="l")
title(main="Black bg And Red fg",
col.main="yellow", #col的用法,下面介紹
sub="By program-dog.blogspot.com", #版權信息
col.sub="white"
)
par(opar)
在看效果:
再來看col,col是顏色的意思,可以用來特指某某是什麼顏色。比如:
x <- seq(1,10,length.out = 100) -6
y <- x^2+10
z <- x^2+10
plot(x,y,type="l",col="red",ylim=c(5,15))
lines(x,z,type="l",col="green")
title(main="col的用法",
sub="By program-dog.blogspot.com" #版權信息
)
col有一些參數是預設的,如下:
col.axis #座標軸
col.lab #標籤
col.main #題目
col.sub #副題目
上面已經用過題目和副題目了,這裏就不再舉例子了。
字體相關
和字體相關的參數有下面幾個:
family #全局字體,特指字體的類型,如宋體還是楷體
font #字體,特指字體的形態,如斜體還是粗體
先來看一看這個family,顧名思義,它是一個“家族”,掌管着做圖的全局字體。舉例說明一下:
代碼:
opar<-par(no.readonly = TRUE)
par(mfrow=c(2,1)) #設置佈局
x<- -10:10
y<- -(x^2)
# mono字體
par(family="mono")
plot(x,y,type='l')
title(main="family mono style",
sub="By program-dog.blogspot.com" #版權信息
)
# 默認字體
par(family="")
plot(x,y,type='l')
title(main="family default style",
sub="By program-dog.blogspot.com" #版權信息
)
par(opar)
效果圖:
仔細觀察,不僅僅題目的字體不一樣,包括線條,標籤的字體也不一樣,這就是所謂的“family”效果。
關於family字體的選擇,可以參見R文檔,這裏不再贅述.
再來看看font,font就是字體的意思,這裏特指字體的形態(如斜體和粗體),但是這個font和col一樣,可以用在特定的位置指明字體,也有幾個預設的參數:
font.axis #座標軸
font.lab #標籤
font.main #題目
font.sub #副題目
用法和col大同小異:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- sin(x)
par(font.axis=1) # 1 普通文本
par(font.lab=2) # 2 粗體
par(font.main=3) # 3 斜體
par(font.sub=4) # 4 粗斜體
plot(x,y,type='l')
title(main="font style",
sub="By program-dog.blogspot.com" #版權信息
)
par(opar)
效果圖:
font是用數字來指明的,再次提醒一下,這裏的font代表的可不是特殊的字體哦。
最後你可能要問了,那字體的大小呢?關於大小(size)接下來就要介紹。
字體大小相關
下面幾個參數和大小是相關的:
cex
ps #專門指字體
先解決上一節字體大小的問題,可以試試ps:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- log(x^2)
par(mfrow=c(3,1)) #設置佈局
par(ps=10) # 10
plot(x,y,type='l')
title(main="font size:ps=10",
sub="By program-dog.blogspot.com" #版權信息
)
par(ps=15) # 15
plot(x,y,type='l')
title(main="font size:ps=15",
sub="By program-dog.blogspot.com" #版權信息
)
par(ps=20) # 20
plot(x,y,type='l')
title(main="font size:ps=20",
sub="By program-dog.blogspot.com" #版權信息
)
par(opar)
效果圖:
顯而易見,ps是控制着所有的字的大小。但是單單指明題目的大小怎麼辦呢?可以試試cex。
cex的用法也同於上面提到的col和font,幾個預設的參數:
cex.axis #座標軸
cex.lab #標籤
cex.main #題目
cex.sun #副題目
舉例來說:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- sin(log(x^2))
par(mfrow=c(2,1)) #設置佈局
par(cex.main=1)
plot(x,y,type='l')
title(main="font size:cex.main=1",
sub="By program-dog.blogspot.com" #版權信息
)
par(cex.main=1.5)
plot(x,y,type='l')
title(main="font size:cex.main=1.5",
sub="By program-dog.blogspot.com" #版權信息
)
par(opar)
效果圖:
仔細觀察發現,cex.main=1.5大字體大小都和ps=20的差不多大了,爲什麼呢?這是因爲,ps中的字體大小=“ps*cex”。具體請見這裏 。
乾巴巴的線條和符號一點都不吸引人的注意力,下面介紹一下和線條和符號相關的幾個參數。
線條相關
這個參數可以定製不同的線條:
lty #line style
代碼:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 100)
y<- sin(log(x^2))
par(lty=1) #lty 1
plot(x,-y,type='l',col="red",ylim=c(-3,3))
par(lty=2) #lty 2
lines(x,y,type='l',col="blue")
title(main="lty",
sub="By program-dog.blogspot.com" #版權信息
)
par(opar)
效果圖:
lty也是用數字來表示不一樣的線條風格,下面是在《R In Action》上弄下來的一張圖:
R In Action
符號相關
下面來看看做圖時候用到的特殊的符號 pch,先來看代碼:
opar<-par(no.readonly = TRUE)
x<- seq(-10,10,length.out = 20)
y1<- 0.1*x^2
y2<- 0.2*x^2
y3<- 0.4*x^2
y4<- 0.8*x^2
y5<- 1.6*x^2
y6<- 3.2*x^2
par(pch=1) #pch 1
plot(x,y1,type='b',col="red",xlim=c(0,5))
par(pch=2) #pch 2
lines(x,y2,type='b',col="blue")
par(pch=3) #pch 3
lines(x,y3,type='b',col="green")
par(pch=4) #pch 4
lines(x,y4,type='b',col="red")
par(pch=5) #pch 5
lines(x,y5,type='b',col="blue")
par(pch=6) #pch 6
lines(x,y6,type='b',col="green")
title(main="pch",
sub="By program-dog.blogspot.com" #版權信息
)
par(opar)
效果圖
pch的線條種類如下,圖同樣摘自《R In Action》:
線條和符號大小相關
線條的大小可以用lwd調節,符號的大小可以用cex調節,看代碼:
opar<-par(no.readonly = TRUE)
x <- seq(1,10,length.out = 20)
y <- 1/x
par(mfrow=c(2,1))
plot(x,y,type="b",pch=2,cex=2,lty=3,lwd=2)
title(main="lwd =2 and cex = 2",
sub="By program-dog.blogspot.com" ,#版權信息
cex.sub=0.5
)
plot(x,y,type="b",pch=2,cex=1,lty=3,lwd=1)
title(main="lwd = 1 and cex =1",
sub="By program-dog.blogspot.com" ,#版權信息
cex.sub=0.5
)
par(opar)
效果圖:
cex上面其實已經介紹過了,不過上面cex用在了par裏面,相當於全局變量,會把所有的線條和符號(包括座標軸,標題等)改變,而這裏只是在plot的特定位置做了修飾,改變了局部。
結束
由於篇幅,par的座標軸,添加圖例,組合做圖等下一篇再介紹。看到這裏,不難發現,R做圖的優勢在於可配置的參數衆多,靈活性極強,同時使人更加專注於做圖而非編程,這只是R在數據處理方面衆多優勢之一。