我正在使用ggplot创建一个boxplot。代码如下:
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)")
这将输出以下图表:
接下来,我想关注一系列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))
这返回了一个警告“删除了包含非有限值的173664行(stat_boxplot)。”并输出以下图表:
显然,ggplot以某种方式改变了boxplot所基于的输入数据。但是,我的目的只是集中在盒子图的片段中,以便我可以更仔细地检查组之间的差异。我怎么能用ggplot做到这一点?
您的建议将不胜感激。
答案 0 :(得分:0)
请使用scale_y_continuous()
,而不是coord_cartesian()
代码。
这个
scale_y_continuous(breaks =seq(0, .05, .01), limit = c(0, 0.05))
替换为
coord_cartesian(ylim = c(0,0.05))
还注意到你正试图表达意思。请注意,boxplot显示中位数不是平均值。也许你应该记住你的数据演示。 BoxPlots通常优于其他选项,因为它显示数据分布(例如异常值)和其他重要统计数据以进行比较。裁剪只显示中位数,因此可能不是一个好主意,而是只能使用geom_point()
显示中位数。