如何使用ggplot中的分组框图将geom_text标签放置在正确的位置

时间:2019-10-23 17:45:38

标签: r ggplot2

在这种情况下,我在虹膜数据框中添加了分组变量。我希望按物种创建Sepal.Length的箱线图,并用分组变量填充,并用标签标识异常值。所有这些都有效,但是当我尝试用geom_text标记离群值时,它们现在确实以分组位置打印,而不是在中心。看来geom_text没有继承全局aes(),但我不知道为什么。

代码:

library(tidyverse)
# function to id outlier
is_outlier <- function(x) {
  return(x < quantile(x, 0.25) - 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x))
}

# make a grouping variable
iris$group <- sample(1:3, nrow(iris),replace = T)

# make a outlier variable
iris <- 
  iris %>%
  group_by(Species, group) %>%
  mutate(outlier = ifelse(is_outlier(Sepal.Length), Sepal.Length, as.numeric(NA)))
iris$outlier

# graph
iris %>%
  ggplot(aes(x = Species,y = Sepal.Length, fill = factor(group))) +
  geom_boxplot() +
  geom_text(aes(label = outlier))

标签位于中间,而不是位于其各自的框上。这是怎么回事?

1 个答案:

答案 0 :(得分:1)

这是由于在拥有该组后才在箱线图中躲避。使用position_dodge对其进行显式控制。您可能要尝试使用DECLARE @SQL NVARCHAR(1000) SET @SQL = 'INSERT INTO Users (Username) VALUES(@VALUE)' EXECUTE sp_executesql @SQL, N'@VALUE VARCHAR(10)', 'Username--' 中的hjustvjust参数,以避免在该点上作图。

geom_text

enter image description here