如何在不排除数据的情况下更改 Y 轴(未显示异常值但占中位数)?

How to change Y axis without excluding data (outliers not shown but accounted for median)?

A 用 ggplot2 绘制箱线图:

ggplot(datasilice, aes(x = Duree_exposition_4gpes, y = CD25plusCD127moinsFoxP3plus_num)) + 
  geom_boxplot(aes(fill= Duree_exposition_4gpes), colour = "black", outlier.shape = 1, show.legend = FALSE) +
  scale_y_continuous(limits=c(0, 160), breaks = seq(0,160,20))

我明白了:

with outliers

我不想显示异常值,所以,我将代码更改为:

ggplot(datasilice, aes(x = Duree_exposition_4gpes, y = CD25plusCD127moinsFoxP3plus_num)) + 
  geom_boxplot(aes(fill= Duree_exposition_4gpes), colour = "black", outlier.shape = NA, show.legend = FALSE) +
  scale_y_continuous(limits=c(0, 160), breaks = seq(0,160,20))

我明白了:

without outliers

到目前为止,还不错。 现在,我想减少我的 Y 轴,所以我减少限制和中断:

ggplot(datasilice, aes(x = Duree_exposition_4gpes, y = CD25plusCD127moinsFoxP3plus_num)) + 
  geom_boxplot(aes(fill= Duree_exposition_4gpes), colour = "black", outlier.shape = NA, show.legend = FALSE) +
  scale_y_continuous(limits=c(0, 120), breaks = seq(0,120,20))

但现在看看第 2 列的中位数是如何修改的?

changed median

所以我的问题是,如何在不排除数据的情况下更改 Y 轴(未显示异常值,但占中位数)?

我试图只修改 "breaks" 或 "limits" 但它没有达到预期的效果...

是的,这不是直观的行为(至少它给出了警告信息)....您需要使用 coord_cartesian 来简单地放大而不更改数据。 比照。

ggplot(mtcars, aes(x = cyl, y = mpg)) + 
+     geom_boxplot(aes(fill= cyl, group=cyl), colour = "black", outlier.shape = NA, show.legend = FALSE) +
+     coord_cartesian(ylim=c(0,25))

对比

ggplot(mtcars, aes(x = cyl, y = mpg)) + 
+     geom_boxplot(aes(fill= cyl, group=cyl), colour = "black", outlier.shape = NA, show.legend = FALSE) +
+     scale_y_continuous(limits=c(0,25))