忽略 ggplot2 中的异常值 geom_violin
Ignore outliers in ggplot2 geom_violin
有没有办法忽略 geom_violin
中的异常值并使 y 轴图与 Q1 和 Q3 分位数相关? (range=1.5
在基础 R 中)。如果这可以自动化(即不只是调用特定的 y 轴限制),那就太好了。
我在这里看到一个使用 geom_boxplot 的解决方案:Ignore outliers in ggplot2 boxplot
但是有没有办法在 geom_violin
中复制这种类型的解决方案?提前致谢!
下面的示例代码具有所需的结果
library(ggplot2)
Result <- as.numeric(c(.2, .03, .11, .05, .2, .02, .22, 1.1, .02, 120))
Group <- as.factor(c("a", "a", "a", "b", "b", "b", "c", "c", "c", "c"))
x <- data.frame(Result, Group)
plot = ggplot(x, aes(x=Group, y=Result)) +
geom_violin()
print(plot)
这是上面的输出(不是一个超级有用的图形):
我想要使用上述数据的类似下图的内容:
我认为与您 link 所使用的方法类似的方法可以在这里使用,除了您需要计算每个组的统计数据并使用最小 Q1 和最大 Q3 作为 coord_cartesian
:
library(dplyr)
# compute lower and upper whiskers for each group
ylims <- x %>%
group_by(Group) %>%
summarise(Q1 = quantile(Result, 1/4), Q3 = quantile(Result, 3/4)) %>%
ungroup() %>%
#get lowest Q1 and highest Q3
summarise(lowQ1 = min(Q1), highQ3 = max(Q3))
plot + coord_cartesian(ylim = as.numeric(ylims)*1.05)
请注意,您可以更改对 coord_cartesian
的调用中的缩放比例,以及计算 Q1 和 Q3 范围的代码的管道位中的分位数中断。
有没有办法忽略 geom_violin
中的异常值并使 y 轴图与 Q1 和 Q3 分位数相关? (range=1.5
在基础 R 中)。如果这可以自动化(即不只是调用特定的 y 轴限制),那就太好了。
我在这里看到一个使用 geom_boxplot 的解决方案:Ignore outliers in ggplot2 boxplot
但是有没有办法在 geom_violin
中复制这种类型的解决方案?提前致谢!
下面的示例代码具有所需的结果
library(ggplot2)
Result <- as.numeric(c(.2, .03, .11, .05, .2, .02, .22, 1.1, .02, 120))
Group <- as.factor(c("a", "a", "a", "b", "b", "b", "c", "c", "c", "c"))
x <- data.frame(Result, Group)
plot = ggplot(x, aes(x=Group, y=Result)) +
geom_violin()
print(plot)
这是上面的输出(不是一个超级有用的图形):
我想要使用上述数据的类似下图的内容:
我认为与您 link 所使用的方法类似的方法可以在这里使用,除了您需要计算每个组的统计数据并使用最小 Q1 和最大 Q3 作为 coord_cartesian
:
library(dplyr)
# compute lower and upper whiskers for each group
ylims <- x %>%
group_by(Group) %>%
summarise(Q1 = quantile(Result, 1/4), Q3 = quantile(Result, 3/4)) %>%
ungroup() %>%
#get lowest Q1 and highest Q3
summarise(lowQ1 = min(Q1), highQ3 = max(Q3))
plot + coord_cartesian(ylim = as.numeric(ylims)*1.05)
请注意,您可以更改对 coord_cartesian
的调用中的缩放比例,以及计算 Q1 和 Q3 范围的代码的管道位中的分位数中断。