我正在使用ggplot2
和facet_wrap
创建多个直方图,希望在每个面板上绘制平均值。下面,我创建一个虚拟数据框,找到每个分面的平均值,然后使用geom_point
添加平均值创建图表。
# Load libraries
library(tidyverse)
# Toy data frame
df <- data.frame(ID = sample(letters[1:3], 100, replace = TRUE), n = runif(100))
# Mean value of each group
df_mean <- df %>% group_by(ID) %>% summarise(mean = mean(n))
# Plot histograms
ggplot(df) +
geom_histogram(aes(n)) +
facet_wrap(~ID) +
geom_point(data = df_mean, aes(x = mean, y = Inf))
我使用了y = Inf
将点放置在每个面的顶部,但是-如您所见-它被裁剪了一些。我想把它向下移动,使其完全可见。据我所知,geom_point
没有nudge_y
或vadj
参数,0.7 * Inf
显然是不合理的。我还尝试将position = position_nudge(y = -5)
作为geom_point
的参数添加,但这似乎没有任何效果。作为解决方法,我甚至尝试使用geom_text
并指定nudge_y
,但像position_nudge
解决方案一样,它没有任何明显的效果。在绘图时是否有简单的方法来完成这个任务,或者我只需要在绘制之前计算y
值?
... + geom_point(data = df_mean,aes(x = mean,y = 0),col =“red”)
这样的东西,以不同的颜色将其放置在x轴上。 - AntoniosK