繁体   English   中英

基础 R 和 ggplot2 的箱线图不匹配

[英]Boxplots by base R and ggplot2 do not match

我有一个简单的数据集 当我分别通过基础 R 和 ggplot 为数据生成箱线图时,它们不匹配。 事实上,基础 R 箱线图与summary function 一致。

library(tidyverse)
library(ggplotify)
library(patchwork)

df <- read.csv("test_boxplot_data.csv")

summary(df)

p1 <- as.ggplot(~boxplot(df$y, outline=FALSE))
p2 <- ggplot(df, aes(y=y)) + geom_boxplot(outlier.shape = NA) + ylim(0,100)

p1 + p2 + plot_layout(ncol = 2)


生成的 plot 保存在这里

任何线索发生了什么? 同样令人惊讶的是,ggplot 会抛出警告“删除了 845 行包含非有限值 (stat_boxplot)”但数据中没有 NA。

来自:“删除了 845 行包含非有限值 (stat_boxplot)”。 恰好数据包含 845 个 > 100 的点。这些点在框 plot 的计算中被删除。

ylim()的第一行帮助:
“这是为单个比例提供限制参数的快捷方式。默认情况下,指定限制之外的任何值都将替换为 NA。请注意,这将删除限制之外的数据,这可能会产生意想不到的结果。对于更改 x 或y 轴限制而不丢弃数据观察,请参阅 coord_cartesian()。"

这应该提供所需的图表:

ggplot(df, aes(y=y)) + geom_boxplot(outlier.shape = NA) + 
       coord_cartesian(ylim=c(0,100))

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM