在箱线图中添加多条水平线

时间:2015-12-19 01:08:20

标签: r line boxplot

我知道我可以使用像

这样的命令在箱线图中添加水平线
abline(h=3)

如果单个面板中有多个箱图,我可以为每个单独的箱图添加不同的水平线吗?

enter image description here

在上面的图中,我想添加一行&#; y = 1.2'为1,' y = 1.5'为2,' y = 2.1'为3。

1 个答案:

答案 0 :(得分:4)

我不确定我是否完全理解,你想要什么,但可能是这样:为每个箱图添加一条线,其中包含与箱线图相同的x轴范围。

框的宽度由pars$boxwex控制,默认设置为0.8。这可以从boxplot.default

的参数列表中看出
formals(boxplot.default)$pars
## list(boxwex = 0.8, staplewex = 0.5, outwex = 0.5)

因此,以下内容为每个箱图产生一个线段:

# create sample data and box plot
set.seed(123)
datatest <- data.frame(a = rnorm(100, mean = 10, sd = 4),
                       b = rnorm(100, mean = 15, sd = 6),
                       c = rnorm(100, mean = 8, sd = 5))
boxplot(datatest)

# create data for segments
n <- ncol(datatest)
# width of each boxplot is 0.8
x0s <- 1:n - 0.4
x1s <- 1:n + 0.4
# these are the y-coordinates for the horizontal lines
# that you need to set to the desired values.
y0s <- c(11.3, 16.5, 10.7)

# add segments
segments(x0 = x0s, x1 = x1s, y0 = y0s, col = "red")

这给出了以下图:

enter image description here