我想改变基本箱线图函数显示数据的方式。
我希望将十分位数作为我的晶须,而不是箱线图现在所做的(最小值-最大值或四分位距乘以给定数字)。
因此我尝试将箱线图保存在变量 ( p
) 中,并用我选择的分位数替换其“统计”属性(定义中位数、IQR 和晶须)。
但是,我无法重新绘制对象(使用 ggplot 时我可能只会调用p
,但在 boxplot 的情况下,它会在我实例化它时立即绘制(即使保存到变量中),然后什么也不会发生。
x <- c(0.94063886031258,1.03136025036433,0.952395711064118,
0.941071695551853,0.862653162449957,0.814470708156107,
1.05880072370121,0.984234604877728,1.01529921088281,
0.946563805766234,0.931529458894898,1.05621485359968)
set.seed(300)
x.boot <- sample(abs(1-x),replace=TRUE,size=1000)
x.q <- quantile(x.boot,c(.1,.25,.5,.75,.9))
p <- boxplot(x.boot)
p[["stats"]] <- matrix(x.q,ncol=1)
p
编辑
我发现我实际上可以这样做,将图保存到可编辑对象中,然后可以重新绘制,但这远非理想,所以如果没有其他选择,我可能会使用 ggplot。
boxplot(x.boot)
# save the plot into an editable object
p <- recordPlot()
# make some edits in the right places
p[[1]][[9]][[2]][[3]] <- c(x.q[2],x.q[2],x.q[4],x.q[4])
p[[1]][[8]][[2]][[5]] <- c(x.q[1],x.q[5])
p[[1]][[8]][[2]][[3]] <- c(x.q[1],x.q[5])
p[[1]][[7]][[2]][[3]] <- c(x.q[1],x.q[5])
p[[1]][[7]][[2]][[5]] <- c(x.q[2],x.q[4])
p[[1]][[4]][[2]][[3]] <- c(x.q[2],x.q[2],x.q[4],x.q[4])
# redraw
plot.new()
p
您需要的是
bxp()
。它根据给定的摘要绘制箱线图。