2014-09-03 35 views
3

是否有本地R boxplot函數爲頂部和底部盒子產生不同顏色的盒子圖?事情是這樣的:R中的半色盒圖

enter image description here

這裏是我想出了以下功能:

h.boxplot <- function(..., col.top='orange', col.bottom='yellow', col.scheme='none'){ 
    cols = c(col.top, col.bottom) 
    if(col.scheme != 'none'){ 
     cs = list(blue=c('#0071c1', '#3198ff'), green=c('#008001', '#99cc00'), yellow=c('#ffcc00', '#cc9900')) 
     stopifnot(col.scheme %in% names(cs)) 
     cols = cs[[col.scheme]] 
    } 

    bx<-boxplot(..., col = "white", lty=1, boxlwd=0.00001) 
    n = length(bx$names) 

    rect(1:n-.4, bx$stats[2,], 1:n+.4, bx$stats[3,], col=cols[2], border=NA) 
    rect(1:n-.4, bx$stats[3,], 1:n+.4, bx$stats[4,], col=cols[1], border=NA) 
    return(bx) 
} 

# Examples 
data = list(A=1:10, B=20:50) 
h.boxplot(data, col.scheme='green', outline=F, frame=F) 
h.boxplot(data, col.scheme='blue', outline=F, frame=F) 

應該看到這樣的信息:

enter image description here

回答

5

這裏不是一個參數,你可以設置在基地boxplot函數來獲得該行爲,但你可以通過drawi在不同顏色的情節上繪製矩形。例如

bx<-boxplot(count ~ spray, data = InsectSprays, col = "lightgray") 
rect(1:6-.4, bx$stats[2,], 1:6+.4, bx$stats[3,], col="orange") 
rect(1:6-.4, bx$stats[3,], 1:6+.4, bx$stats[4,], col="yellow") 

enter image description here

您可以繼續自定義你喜歡的。

+0

我一直在想這些方面!謝謝!我會盡快爲他人發佈我的功能。 – by0 2014-09-03 19:20:03