簡體   English   中英

結合R中的箱線圖

[英]Combining boxplots in R

我有一個關於箱線圖的繪圖問題(使用基本圖形)。

我有幾個數據陣列,希望將它們轉換成箱形圖並進行比較。 數組反映了不同的實驗,我想展示的是基本結果和實驗的百分比差異(在一個圖上!)。 即在第一個y軸上的基本結果,在第二個y軸上的%diff:

base <- array(runif(12*24*3), dim=c(12,24,3))
exp1 <- array(runif(12*24*3), dim=c(12,24,3))
exp2 <- array(runif(12*24*3), dim=c(12,24,3))
exp3 <- array(runif(12*24*3), dim=c(12,24,3))
exp4 <- array(runif(12*24*3), dim=c(12,24,3))

# calc p.diff
p.diff   <- function(mod,base)  {
                 100.0*((mod-base)/base) }

a <- p.diff(exp1,base)
b <- p.diff(exp2,base)
c <- p.diff(exp3,base)

# combine the % diff arrays
exps <- list(a,b,c)

# plot the results
boxplot(base, xlim=c(1,4), col="gray", xaxt="n", ylab="Base values", outline=FALSE)
axis(side=1, 1:4, labels=c("base","% exp1","% exp2","% exp3") )
par(new=TRUE)
boxplot(exps, col="red", ylim=c(-200,200), outline=FALSE, axes=FALSE)
axis(4)
grid()

這幾乎可以用,但是我無法正確定位不同箱形圖的位置(如果運行我的示例,您將明白我的意思)。 那么,有沒有更好的方法來控制箱形圖的放置? 還是產生類似類型人物的更好方法?

編輯(1):您需要定義X軸的剛性序列。 這樣地塊就不會重疊。 只是嘗試玩它。

我認為X軸的標簽位置不正確? 我不知道一種更優雅的方式,但這是一個解決方案:

# plot the results
boxplot(base, xlim=c(1,4), col="gray", xaxt="n", ylab="Base values", outline=FALSE)
axis(side=1,1,labels=('base'))
par(new=TRUE)
boxplot(exps, col="red", ylim=c(-200,200), outline=FALSE, axes=FALSE)
axis(4)
axis(side=1,1:3,labels=c("% exp1","% exp2","% exp3"))
grid()

所以我在創建boxplot之后添加了每個標簽。 首先繪制base並標記,然后繪制exps並標記。 它能解決您的問題嗎?

編輯:為了更清楚,您要添加一個具有3個值的新圖,這就是為什么axis(side=1,1:3,labels=c("% exp1","% exp2","% exp3"))是1到3 ...

編輯(2):

為什么不在圖表中使用多行並嘗試繪制2個圖形? 這是您的數據的示例:

#divide your plottin area into 2 columns with one row.
par(mfrow = c(1, 2))
# plot the results
boxplot(base, col="gray", xaxt="n", ylab="Base values", outline=FALSE,axes=FALSE)
axis(2)
axis(side=1,1,labels=('base'))
segments(0,0,1,0)
boxplot(exps,col="red", xaxt="n", ylim=c(-200,200), outline=FALSE, axes=FALSE)
axis(4)
axis(side=1,at=(1:3),labels=c("% exp1","% exp2","% exp3"))

您可以從這里獲得有關它的更多信息

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM