ak7*_*ak7 2 r limit ggplot2 boxplot
我正在使用 ggplot 创建箱线图。代码如下:
ggplot(my_data, aes(x = as.factor(viotiko), y = pd_1year, fill = as.factor(viotiko))) + geom_boxplot() +
labs(title="Does the PD differ significantly by 'Viotiko' group?",x="Viotiko Group", y = "PD (pd_1year)")
Run Code Online (Sandbox Code Playgroud)
这将输出以下图表:
接下来,我想关注 y 值的范围 --[0, 0.05] -- 我再次运行更改参数的代码。我并不是要排除数据并改变均值和分布,而只是关注特定范围的 y 值。代码又是这样的:
ggplot(my_data, aes(x = as.factor(viotiko), y = pd_1year, fill = as.factor(viotiko))) + geom_boxplot() +
labs(title="Does the PD differ significantly by 'Viotiko' group?",x="Viotiko Group", y = "PD (pd_1year)") +
scale_y_continuous(breaks =seq(0, .05, .01), limit = c(0, 0.05))
Run Code Online (Sandbox Code Playgroud)
这返回了一个警告“删除了 173664 行包含非有限值 (stat_boxplot)”。并输出如下图:
显然, ggplot 以某种方式改变了箱线图所基于的输入数据。但是,我的目的只是关注箱线图的一部分,以便我可以更仔细地检查组之间的差异。如何使用 ggplot 执行此操作?
您的建议将不胜感激。
代替您的scale_y_continuous()
代码,使用coord_cartesian()
如下。
这个
scale_y_continuous(breaks =seq(0, .05, .01), limit = c(0, 0.05))
Run Code Online (Sandbox Code Playgroud)
用这个替换
coord_cartesian(ylim = c(0,0.05))
Run Code Online (Sandbox Code Playgroud)
还注意到你试图表现出意思。请注意,箱线图显示的中位数不是均值。也许您应该在数据演示中记住一些事情。此外,BoxPlots 通常比其他选项更受欢迎,因为它显示数据分布(例如异常值)和其他用于比较的重要统计数据。裁剪仅显示中位数,因此可能不是一个好主意,而您只能使用geom_point()
.