为什么 ggplot 不显示箱线图的误差线?
Why doesn't ggplot show the error bar of a boxplot?
我在 R 中用 ggplot 做了一些箱线图,我想知道为什么它不只显示一个箱线图的错误栏?
代码就是这个:
ID1.4.5.6.7[,"Time"] <- as.factor(ID1.4.5.6.7[,"Time"])
ggplot(data=ID1.4.5.6.7,aes(x=Time, y=mRNA, fill=Time)) +
geom_boxplot(notch = TRUE) +
stat_boxplot(geom="errorbar")+
labs(title="mRNA vs Time", subtitle="Irradiated",x = "Time [min]",y = "mRNA")+
theme(plot.title = element_text(hjust = 0.5),plot.subtitle = element_text(hjust = 0.5))
不知道是代码的问题还是不是数据的问题
structure(list(Gene = c("ID-1", "ID-1", "ID-1", "ID-1", "ID-1",
"ID-1", "ID-1", "ID-1", "ID-1", "ID-1", "ID-1", "ID-1", "ID-1",
"ID-1", "ID-1", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4",
"ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4",
"ID-4", "ID-4", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5",
"ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5",
"ID-5", "ID-5", "ID-5", "ID-5", "ID-6", "ID-6", "ID-6", "ID-6",
"ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6",
"ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-7", "ID-7",
"ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7",
"ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7"
), mRNA = c(-0.181385669, -0.059647494, 0.104476117, -0.052190978,
-0.040484945, 0.194226742, -0.501601326, 0.102342605, -0.127143845,
-0.008523742, -0.102946211, -0.042894028, 0.002922923, -0.134394347,
-0.214204393, -0.138122686, 0.203242361, 0.097935502, 0.147068146,
-0.089430917, 0.331565412, -0.034572422, -0.129896329, 0.324191,
0.470108479, -0.027268223, 0.232304713, 0.090348708, 0.070848402,
0.181540708, -0.502255367, -0.267631441, -0.368647839, -0.040910404,
-0.003983171, -0.003983171, -0.003983171, -0.14980589, -0.119449612,
-0.309154214, -0.487589361, 0.272803506, -0.421733575, -0.467108567,
0.024868338, -0.156025729, -0.044680175, -0.206716896, -0.272014193,
-0.230499883, -0.238597397, -0.118130949, 0.349957464, 0.349957464,
0.349957464, 0.172048587, -0.186226994, 0.16113822, -0.293029136,
-0.111636253, -0.044189887, 0.081555274, -0.048106079, -0.05853566,
0.010407814, -0.066981809, -0.09828484, -0.315190986, -0.005102456,
0.221556197, 0.206584568, 0.206584568, 0.206584568, 0.102649006,
-0.011777384, -0.36963487, -0.054853074, -0.230240699, -0.210508323,
-0.208889919, -0.050763372, 0.023073782, -0.095118984, -0.091076071,
-0.330257395), Time = structure(c(2L, 2L, 2L, 3L, 3L, 2L, 3L,
3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 3L,
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 2L, 2L, 2L, 1L, 1L, 1L, 3L, 3L,
2L, 3L, 3L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 2L, 2L, 2L, 1L, 1L, 1L,
3L, 3L, 2L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 2L, 2L, 2L, 1L,
1L, 1L, 3L, 2L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L), .Label = c("0",
"20", "40", "60", "120"), class = "factor"), predicted_mRNA = c(-0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.0550290443228268, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.0550290443228268, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, 0.0192495170309491,
0.0192495170309491, 0.0192495170309491, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.129307605676603, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, 0.0192495170309491,
0.0192495170309491, 0.0192495170309491, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.0550290443228268, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, 0.0192495170309491,
0.0192495170309491, 0.0192495170309491, -0.0302695238715682,
-0.00551000342030954, -0.0302695238715682, -0.0302695238715682,
-0.0550290443228268, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.129307605676603, -0.129307605676603,
-0.129307605676603, -0.129307605676603)), row.names = c(NA, -85L
), class = "data.frame")
这里是 dput(ID1.4.5.6.7) 所以数据帧。
因为箱线图没有误差线。箱线图只是五个数字的图形表示:最小值、Q1(第一个四分位数)、中位数、Q3(第三个四分位数)和最大值。晶须(上下移动的“条形”)只是以数据中的最小值(下方)和最大值(上方)结尾的线。 “盒子”的底部边缘是 Q1,顶部边缘是 Q3。
有可能一组数据排列成最小值与Q1相同,最大值与Q3相同。或多或少,这似乎是没有胡须的箱线图中发生的事情。 ggplot 在箱形图中添加了一些额外的细节(拉入的“腰部”,以及导致可能在 Time 0 组顶部看到的反转的算法调整),但或多或少似乎是正在发生的事情。
编辑: 这个看似是代码的问题,其实是统计的问题。交叉验证可能更好(尽管我认为现在可能已经得到充分回答)。
我建议使用这种方法,您可以启用 varwidth
以查看错误栏。这里的代码:
#Plot
ggplot(data=ID1.4.5.6.7,aes(x=Time, y=mRNA, fill=Time)) +
geom_boxplot(varwidth = TRUE,notch=TRUE) +
stat_boxplot(geom="errorbar")+
labs(title="mRNA vs Time", subtitle="Irradiated",x = "Time [min]",y = "mRNA")+
theme(plot.title = element_text(hjust = 0.5),plot.subtitle = element_text(hjust = 0.5))
输出:
我在 R 中用 ggplot 做了一些箱线图,我想知道为什么它不只显示一个箱线图的错误栏?
ID1.4.5.6.7[,"Time"] <- as.factor(ID1.4.5.6.7[,"Time"])
ggplot(data=ID1.4.5.6.7,aes(x=Time, y=mRNA, fill=Time)) +
geom_boxplot(notch = TRUE) +
stat_boxplot(geom="errorbar")+
labs(title="mRNA vs Time", subtitle="Irradiated",x = "Time [min]",y = "mRNA")+
theme(plot.title = element_text(hjust = 0.5),plot.subtitle = element_text(hjust = 0.5))
不知道是代码的问题还是不是数据的问题
structure(list(Gene = c("ID-1", "ID-1", "ID-1", "ID-1", "ID-1",
"ID-1", "ID-1", "ID-1", "ID-1", "ID-1", "ID-1", "ID-1", "ID-1",
"ID-1", "ID-1", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4",
"ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4", "ID-4",
"ID-4", "ID-4", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5",
"ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5", "ID-5",
"ID-5", "ID-5", "ID-5", "ID-5", "ID-6", "ID-6", "ID-6", "ID-6",
"ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6",
"ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-6", "ID-7", "ID-7",
"ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7",
"ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7", "ID-7"
), mRNA = c(-0.181385669, -0.059647494, 0.104476117, -0.052190978,
-0.040484945, 0.194226742, -0.501601326, 0.102342605, -0.127143845,
-0.008523742, -0.102946211, -0.042894028, 0.002922923, -0.134394347,
-0.214204393, -0.138122686, 0.203242361, 0.097935502, 0.147068146,
-0.089430917, 0.331565412, -0.034572422, -0.129896329, 0.324191,
0.470108479, -0.027268223, 0.232304713, 0.090348708, 0.070848402,
0.181540708, -0.502255367, -0.267631441, -0.368647839, -0.040910404,
-0.003983171, -0.003983171, -0.003983171, -0.14980589, -0.119449612,
-0.309154214, -0.487589361, 0.272803506, -0.421733575, -0.467108567,
0.024868338, -0.156025729, -0.044680175, -0.206716896, -0.272014193,
-0.230499883, -0.238597397, -0.118130949, 0.349957464, 0.349957464,
0.349957464, 0.172048587, -0.186226994, 0.16113822, -0.293029136,
-0.111636253, -0.044189887, 0.081555274, -0.048106079, -0.05853566,
0.010407814, -0.066981809, -0.09828484, -0.315190986, -0.005102456,
0.221556197, 0.206584568, 0.206584568, 0.206584568, 0.102649006,
-0.011777384, -0.36963487, -0.054853074, -0.230240699, -0.210508323,
-0.208889919, -0.050763372, 0.023073782, -0.095118984, -0.091076071,
-0.330257395), Time = structure(c(2L, 2L, 2L, 3L, 3L, 2L, 3L,
3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 2L, 2L, 2L, 3L, 3L, 2L, 3L, 3L,
4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 2L, 2L, 2L, 1L, 1L, 1L, 3L, 3L,
2L, 3L, 3L, 4L, 4L, 4L, 5L, 5L, 5L, 5L, 2L, 2L, 2L, 1L, 1L, 1L,
3L, 3L, 2L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 2L, 2L, 2L, 1L,
1L, 1L, 3L, 2L, 3L, 3L, 4L, 4L, 4L, 4L, 5L, 5L, 5L, 5L), .Label = c("0",
"20", "40", "60", "120"), class = "factor"), predicted_mRNA = c(-0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.0550290443228268, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.0550290443228268, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, 0.0192495170309491,
0.0192495170309491, 0.0192495170309491, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.129307605676603, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, 0.0192495170309491,
0.0192495170309491, 0.0192495170309491, -0.0302695238715682,
-0.0302695238715682, -0.00551000342030954, -0.0302695238715682,
-0.0302695238715682, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.0550290443228268, -0.129307605676603,
-0.129307605676603, -0.129307605676603, -0.00551000342030954,
-0.00551000342030954, -0.00551000342030954, 0.0192495170309491,
0.0192495170309491, 0.0192495170309491, -0.0302695238715682,
-0.00551000342030954, -0.0302695238715682, -0.0302695238715682,
-0.0550290443228268, -0.0550290443228268, -0.0550290443228268,
-0.0550290443228268, -0.129307605676603, -0.129307605676603,
-0.129307605676603, -0.129307605676603)), row.names = c(NA, -85L
), class = "data.frame")
这里是 dput(ID1.4.5.6.7) 所以数据帧。
因为箱线图没有误差线。箱线图只是五个数字的图形表示:最小值、Q1(第一个四分位数)、中位数、Q3(第三个四分位数)和最大值。晶须(上下移动的“条形”)只是以数据中的最小值(下方)和最大值(上方)结尾的线。 “盒子”的底部边缘是 Q1,顶部边缘是 Q3。
有可能一组数据排列成最小值与Q1相同,最大值与Q3相同。或多或少,这似乎是没有胡须的箱线图中发生的事情。 ggplot 在箱形图中添加了一些额外的细节(拉入的“腰部”,以及导致可能在 Time 0 组顶部看到的反转的算法调整),但或多或少似乎是正在发生的事情。
编辑: 这个看似是代码的问题,其实是统计的问题。交叉验证可能更好(尽管我认为现在可能已经得到充分回答)。
我建议使用这种方法,您可以启用 varwidth
以查看错误栏。这里的代码:
#Plot
ggplot(data=ID1.4.5.6.7,aes(x=Time, y=mRNA, fill=Time)) +
geom_boxplot(varwidth = TRUE,notch=TRUE) +
stat_boxplot(geom="errorbar")+
labs(title="mRNA vs Time", subtitle="Irradiated",x = "Time [min]",y = "mRNA")+
theme(plot.title = element_text(hjust = 0.5),plot.subtitle = element_text(hjust = 0.5))
输出: