R:如何根据间距绘制带有数字 x 轴的箱线图(不是 ggplot)
R: How to plot a boxplot with numeric x-axis for according spacing (not ggplot)
我想用 R 的常规 /boxplot 函数而不是 ggplot 绘制箱线图。
Y 轴和 X 轴是连续的数值变量(x 轴 6 个力:1.0、1.3、1.6、2.0、2.5、3.1 [N])
在 Y 轴上,参与者评分(1 到 7)。
我想绘制它,在 x 轴上使用量化间距,然后将回归线添加到图中。找不到常规 /boxplot 函数的任何内容。
到目前为止的代码:
kraft_ou <- data.frame(VR1_100$ou_kraft,
VR1_125$ou_kraft,
VR1_160$ou_kraft,
VR1_200$ou_kraft,
VR1_250$ou_kraft,
VR1_310$ou_kraft)
colnames(kraft_ou) <- c("kraft_100", "kraft_125", "kraft_160", "kraft_200", "kraft_250", "kraft_310")
kraft_ou
boxplot(kraft_ou,
names=c("1,0 [N]", "1,3 [N]","1,6 [N]","2,0 [N]","2,5 [N]","3,1 [N]"),
col = "bisque",
ylim = c(1, 7))
points(1:6, meanskraftou, pch=4)
text(1:6, meanskraftou + 0.24, labels = meanskraftou)
abline(h=4)
数据(对于 6 种力中的每一种,n=30 个评分,从 1 到 7):
dput(kraft_ou)
structure(list(kraft_100 = c(4, 3, 5, 5, 3, 4, 2, 4, 4, 5, 4,
5, 5, 4, 4, 3, 4, 4, 5, 4, 6, 5, 4, 5, 5, 5, 4, 4, 4, 4), kraft_125 = c(4,
4, 5, 6, 4, 3, 4, 4, 4, 5, 4, 5, 4, 5, 4, 3, 4, 4, 4, 6, 6, 4,
4, 5, 3, 5, 4, 4, 4, 5), kraft_160 = c(5, 6, 6, 6, 6, 4, 6, 5,
6, 5, 4, 3, 6, 6, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, 4, 6, 4, 5, 5,
5), kraft_200 = c(6, 5, 6, 6, 5, 4, 5, 5, 6, 7, 5, 3, 5, 5, 5,
4, 7, 6, 5, 5, 7, 6, 5, 6, 6, 6, 5, 4, 5, 3), kraft_250 = c(5,
6, 6, 7, 6, 6, 6, 6, 7, 7, 6, 5, 7, 7, 5, 5, 6, 6, 7, 7, 6, 6,
5, 5, 5, 7, 4, 6, 6, 5), kraft_310 = c(7, 7, 7, 7, 6, 5, 6, 6,
6, 7, 4, 5, 7, 6, 5, 5, 7, 6, 5, 6, 6, 6, 5, 6, 5, 6, 5, 6, 6,
6)), class = "data.frame", row.names = c(NA, -30L))
您可以使用 at
参数为您的箱线图指定 x 位置,但要使它们足够窄以避免过度绘制,您需要添加一个不可见的框并将可见框的相对宽度设置为较小的值:
boxplot(cbind(kraft_ou, n = rep(NA, nrow(kraft_ou))),
names=c("1,0 [N]", "1,3 [N]","1,6 [N]","2,0 [N]","2,5 [N]","3,1 [N]",
" "),
col = "bisque",
ylim = c(1, 7), width = c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 1),
at = c(1, 1.3, 1.6, 2.0, 2.5, 3.1, 3.1))
abline(h = 4)
要添加回归线,您需要将所有数据框值放在一个 y 变量中,以及它们对应的 x 轴位置的向量:
abline(lm(unlist(kraft_ou) ~ rep(c(1, 1.3, 1.6, 2.0, 2.5, 3.1), each = 30)))
我想用 R 的常规 /boxplot 函数而不是 ggplot 绘制箱线图。 Y 轴和 X 轴是连续的数值变量(x 轴 6 个力:1.0、1.3、1.6、2.0、2.5、3.1 [N]) 在 Y 轴上,参与者评分(1 到 7)。
我想绘制它,在 x 轴上使用量化间距,然后将回归线添加到图中。找不到常规 /boxplot 函数的任何内容。
到目前为止的代码:
kraft_ou <- data.frame(VR1_100$ou_kraft,
VR1_125$ou_kraft,
VR1_160$ou_kraft,
VR1_200$ou_kraft,
VR1_250$ou_kraft,
VR1_310$ou_kraft)
colnames(kraft_ou) <- c("kraft_100", "kraft_125", "kraft_160", "kraft_200", "kraft_250", "kraft_310")
kraft_ou
boxplot(kraft_ou,
names=c("1,0 [N]", "1,3 [N]","1,6 [N]","2,0 [N]","2,5 [N]","3,1 [N]"),
col = "bisque",
ylim = c(1, 7))
points(1:6, meanskraftou, pch=4)
text(1:6, meanskraftou + 0.24, labels = meanskraftou)
abline(h=4)
数据(对于 6 种力中的每一种,n=30 个评分,从 1 到 7):
dput(kraft_ou) structure(list(kraft_100 = c(4, 3, 5, 5, 3, 4, 2, 4, 4, 5, 4, 5, 5, 4, 4, 3, 4, 4, 5, 4, 6, 5, 4, 5, 5, 5, 4, 4, 4, 4), kraft_125 = c(4, 4, 5, 6, 4, 3, 4, 4, 4, 5, 4, 5, 4, 5, 4, 3, 4, 4, 4, 6, 6, 4, 4, 5, 3, 5, 4, 4, 4, 5), kraft_160 = c(5, 6, 6, 6, 6, 4, 6, 5, 6, 5, 4, 3, 6, 6, 6, 5, 5, 5, 5, 6, 6, 6, 5, 5, 4, 6, 4, 5, 5, 5), kraft_200 = c(6, 5, 6, 6, 5, 4, 5, 5, 6, 7, 5, 3, 5, 5, 5, 4, 7, 6, 5, 5, 7, 6, 5, 6, 6, 6, 5, 4, 5, 3), kraft_250 = c(5, 6, 6, 7, 6, 6, 6, 6, 7, 7, 6, 5, 7, 7, 5, 5, 6, 6, 7, 7, 6, 6, 5, 5, 5, 7, 4, 6, 6, 5), kraft_310 = c(7, 7, 7, 7, 6, 5, 6, 6, 6, 7, 4, 5, 7, 6, 5, 5, 7, 6, 5, 6, 6, 6, 5, 6, 5, 6, 5, 6, 6, 6)), class = "data.frame", row.names = c(NA, -30L))
您可以使用 at
参数为您的箱线图指定 x 位置,但要使它们足够窄以避免过度绘制,您需要添加一个不可见的框并将可见框的相对宽度设置为较小的值:
boxplot(cbind(kraft_ou, n = rep(NA, nrow(kraft_ou))),
names=c("1,0 [N]", "1,3 [N]","1,6 [N]","2,0 [N]","2,5 [N]","3,1 [N]",
" "),
col = "bisque",
ylim = c(1, 7), width = c(0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 1),
at = c(1, 1.3, 1.6, 2.0, 2.5, 3.1, 3.1))
abline(h = 4)
要添加回归线,您需要将所有数据框值放在一个 y 变量中,以及它们对应的 x 轴位置的向量:
abline(lm(unlist(kraft_ou) ~ rep(c(1, 1.3, 1.6, 2.0, 2.5, 3.1), each = 30)))