我正在尝试在箱线图上添加85%和95%百分位的线条以及该百分位数的记录。 这是我的代码:
boxplot(x[x>0], log = "y") +
abline(h = quantile(x,0.85), col = 'red') +
text(y = quantile(x,0.95), labels = quantile(x,0.95), col = 'red')
它显示错误消息:
Error in boxplot(x[x > 0], log = "y") + abline(h = quantile(x, 0.85), :
non-numeric argument to binary operator
然而,它正在运作,但没有文字!如果你能帮我解决这个问题,我将不胜感激
p.s x是事务数据的向量(高度偏斜),因此我使用y登录的原因。
非常感谢
答案 0 :(得分:0)
我认为你想要85%和95%的线路。这使得两条线都使用一些虚假数据标记它们。我还添加了options(scipen=5)
以避免y轴上的科学记数法。
## Bogus data
set.seed(1234)
x = pmax(rnorm(400, 225, 70), 0)^2
options(scipen=5)
boxplot(x[x>0], log = "y")
abline(h = quantile(x,c(0.85, 0.95)), col = 'red')
text(x=0.6, y = quantile(x,c(0.85, 0.95)), pos=c(1,3), cex=0.8,
labels = round(quantile(x,c(0.85, 0.95))), col = 'red')
如果您让该行经过该文本,则很难阅读。既然你想要" alignment",也许你宁愿只有一个线段而不是一个完整的线。这样,文本可以与行处于同一级别。更改颜色就像提供所需颜色列表一样简单。
options(scipen=5)
boxplot(x[x>0], log = "y")
segments(c(0.8,0.8), quantile(x,c(0.85, 0.95)),
c(1.2,1.2), quantile(x,c(0.85, 0.95)), col=c('red', 'seagreen'))
text(x=0.64, y=quantile(x,c(0.85, 0.95)), cex=0.8, col=c('red', 'seagreen'),
labels = paste(c("85th percentile = ", "95th percentile = "),
round(quantile(x,c(0.85, 0.95)))))