R語言繪圖佈局

轉載自博客廬州月光,感謝作者的分享
http://www.cnblogs.com/xudongliang/p/6741843.html

在R語言中,par 函數可以設置圖形邊距,其中oma 參數設置outer margin, mar參數設置margin,這些邊距有什麼不同呢,通過box函數可以直觀的看到。box 默認在當前圖形繪製邊框,第一個參數which = “plot”, 所以在當前圖形上繪製邊框。

which 的值除了plot 之外,還可以選擇 figure, inner, outer。接下來分別用不同的值測試一下,爲了區分,爲不同的邊框設置不同的顏色和類型,代碼如下:

attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
box(which = "plot", col = "red", lwd = 2)
box(which = "figure",col = "blue", lwd = 4)

#爲了區分,plot的邊框爲紅色, figure的邊框爲藍色

可以看出,在figure區域中包含了plot區域, plot區域指的是實際繪圖中的座標系內的區域,裏面是座標系中的點,線等元素,而在figure和plot區域之間的是座標軸的刻度,x軸和y中的標籤,title等元素

在紅色的邊框和藍色的邊框之間的區域就是inner margin, 如果inner margin 太窄會發生什麼,用一個實際的例子看一下

par(oma=c(1,1,1,1), mar=c(2,2,2,2))
attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
box(which = "plot",  col = "red",    lwd = 2)
box(which = "figure",col = "blue",   lwd = 4)

可以看到,座標軸對應的標題沒有了,通過mar參數設置了inner margin的寬度,由於都是1,太窄了,所以座標軸的標題沒顯示出來,下次遇到類似的問題,就知道因該將inner margin 設置的大一些

mar參數的值是一個長度爲4的向量,分別對應下,左,上,右 4個方向的inner margin, 只需要記住第一個對應的是下,然後沿逆時針方向設置就可以了;

解決了inner margin 的問題,那麼outer margin又是怎麼一回事呢?在figuer區域和我們整個繪圖設備之間,其實還有一個邊距,這個邊距就是outer margin, 只不過默認值都是0,所以看不到

接下來我們用oma參數設置outer margin 的值,將其設置的寬一點,然後再用box 標記出outer 邊框和figure 邊框,直觀的看一下,代碼如下:

par(oma=c(2,2,2,2))
attach(mtcars)
plot(wt, mpg)
abline(lm(mpg~wt))
title("Regression of MPG on Weight")
box(which = "plot",  col = "red",    lwd = 2)
box(which = "figure",col = "blue",   lwd = 4)
box(which = "outer", col = "black",  lty = 8)

圖中虛線對應的就是outer邊框,在outer和figure 邊框之間的就是 outer margin , 通過oma參數的值來設置outer margin 的寬度,和mar類似,也是從下方開始,沿着逆時針方向進行設置。

通過上面的幾個例子,我們就可以看到,在R語言中,在一個繪圖設備上有3個不同的邊框,最外圈爲outer邊框,可以看作整張紙的邊沿,而中間的figure 邊框纔是繪製圖形的地方,通過par函數的oma 參數控制figure區域的大小;

plot區域繪製的是座標系中的元素,在plot 區域和figure邊框之間的inner margin 用來放置座標軸刻度,標題等元素,通過par 函數的mar參數可以設置其大小

調整參數 區域 邊框參數
mar/mai plot
oma/omi figure inner
device outer
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章