有时您希望将绘图的轴范围限制在感兴趣的区域,以便强调某些特征(例如,中位数和四分位数的位置)。然而,可能有必要明确有多少/多少比例的值位于(截断的)轴范围之外。
我试图在R中使用ggplot2时显示这一点,并且我想知道在ggplot2中是否有一些构建方式(或者你可能已经使用了一些明智的解决方案)。我实际上并没有特别坚持任何特定的显示方式(例如在绘图边缘有不同符号的抖动点,外面有一个小小的条,这取决于它的显示范围外的比例,某种其他类型显示以某种方式传达信息)。
下面是一些示例代码,它创建了一些模拟数据和我想到的那种情节(在代码下方显示),但没有任何明确的指示,确切地说有多少数据在y轴范围之外。
library(ggplot2)
set.seed(seed=123)
group <- rep(c(0,1),each=500)
y <- rcauchy(1000, group, 10)
mockdata <- data.frame(group,y)
ggplot(mockdata, aes(factor(group),y)) + geom_boxplot(aes(fill = factor(group))) + coord_cartesian(ylim = c(-40,40))
答案 0 :(得分:2)
您可以提前计算这些值并通过例如geom_text
:
library(dplyr)
upper_lim <- 40
lower_lim <- -40
mockdata$upper_cut <- mockdata$y > upper_lim
mockdata$lower_cut <- mockdata$y < lower_lim
mockdata$group <- as.factor(mockdata$group)
mockpts <- mockdata %>%
group_by(group) %>%
summarise(upper_count = sum(upper_cut),
lower_count = sum(lower_cut))
ggplot(mockdata, aes(group, y)) +
geom_boxplot(aes(fill = group)) +
coord_cartesian(ylim = c(lower_lim, upper_lim)) +
geom_text(y = lower_lim, data = mockpts,
aes(label = lower_count, x = group), hjust = 1.5) +
geom_text(y = upper_lim, data = mockpts,
aes(label = upper_count, x = group), hjust = 1.5)