在两个 ggplot 直方图上显示平均值和中位数

Gab*_*lla 4 r histogram ggplot2

我是新的 stackoverflow 用户,目前无法对原始帖子发表评论来提问。我遇到了之前的 stackoverflow 答案(/sf/answers/2383154791/),我想知道如何在此图中添加两条垂直线(组的平均值和组的中位数)。

在此输入图像描述

我的尝试:我不知道如何添加组变量“type”

geom_vline(aes(xintercept = mean(diff), ), color="black") + 
geom_vline(aes(xintercept = median(diff), ), color="red") 
Run Code Online (Sandbox Code Playgroud)

小智 5

有几种不同的方法可以做到这一点,但我喜欢创建一个单独的汇总数据框,然后将其传递到 geom_vline 调用中。这使您可以分析结果,并可以轻松添加按类型自动排序和着色的多行:

library(tidyverse) 

df <-
  tibble(
    x = rnorm(40),
    category = rep(c(0, 1), each = 20)
  )

df_stats <-
  df %>% 
  group_by(category) %>% 
  summarize(
    mean = mean(x), 
    median = median(x)
  ) %>% 
  gather(key = key, value = value, mean:median)

df %>% 
  ggplot(aes(x = x)) +
  geom_histogram(bins = 20) +
  facet_wrap(~ category) +
  geom_vline(data = df_stats, aes(xintercept = value, color = key))
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述