使用箱线图框架无法轻松生成您想要做的事情。
R 中的基础箱线图是 boxplot.stats() 函数。让我们在您的数据上运行它:
boxplot.stats(Mydata)
$stats
[1] 1 152 204 253 300
$n
[1] 502
$conf
[1] 196.8776 211.1224
$out
[1] 500
您可以看到$stats 按顺序返回:下须线、25% 分位数、中位数、75% 分位数、上须线。与quantile比较:
quantile(Mydata)
0% 25% 50% 75% 100%
1 152 204 253 500
如果您使用来自ggplot2 的geom_boxplot(),则可以重新定义用于该框的值。但你只能绘制相同的五个值:它们分别称为ymin、lower、middle、upper 和ymax。
例如,如果您希望将 2.5% 的分位数设为 lower,将 97.5% 的分位数设为 upper,您可以尝试:
data.frame(x = 1,
y0 = min(Mydata),
y025 = quantile(Mydata, 0.025),
y50 = median(Mydata),
y975 = quantile(Mydata, 0.975),
y100 = max(Mydata)) %>%
ggplot(df, aes(x)) +
geom_boxplot(aes(ymin = y0,
lower = y025,
middle = y50,
upper = y975,
ymax = y100),
stat = "identity")
但是,您需要明确说明(可能使用标签)这不是“标准”箱线图。
另一个ggplot2 的想法是使用geom_jitter 绘制数据点,然后使用geom_hline 为所需的分位数添加线条。像这样的:
library(tibble)
library(ggplot2)
Mydataq <- quantile(Mydata, probs = c(0.025, 0.25, 0.5, 0.7, 0.75, 0.975)) %>%
as.data.frame() %>%
setNames("value") %>%
rownames_to_column(var = "quantile")
Mydataq %>%
ggplot() +
geom_hline(aes(yintercept = value, color = quantile)) +
geom_jitter(data = tibble(x = "Mydata", y = Mydata),
aes(x = x, y = y))