gpt4 book ai didi

r - 如何在密度图中添加来自 geom_vline 的 x 截距作为标签?

转载 作者:行者123 更新时间:2023-12-04 01:39:30 26 4
gpt4 key购买 nike

我正在创建一个密度图并对其进行分面。假设我有 4 个变量组,使用这个变量对其进行分面将生成 4 个密度图。

对于每个密度图,我都画了一条代表平均值的垂直线。

然而,需要观察并查看 x 轴和垂直线之间的交点,才能大致了解平均值是多少。

我想为每个密度图创建的是,我还想在绘图区域中将其平均值显示为标签。

示例代码如下


x <- rnorm(n = 100, mean = 10, sd = 1)
y <- rnorm(n = 100, mean = 20, sd = 1)
z <- rnorm(n = 100, mean = 40, sd = 1)



df <- as_tibble(cbind(
c(x,y,z),
c(rep('x',length(x)), rep('y',length(y)), rep('z',length(z))),
c(rep('a',length(x)/2), rep('b',length(x)/2))))

df$V1 <- as.numeric(df$V1)

df <- df %>% group_by(V2, V3) %>%
summarise(mumean = mean(V1)) %>%
right_join(df)


df %>%
ggplot(aes(x = V1, color = V2)) +
geom_density(aes(fill = V2)) + facet_grid(V3 ~ V2) + theme_bw() +
geom_vline(data = df, aes(xintercept = mumean))

enter image description here

最佳答案

一种方法是预先计算平均值并使用它们来提供 geom_vlinegeom_text:

library(dplyr)
iris_means <- iris %>%
group_by(Species) %>%
summarize(mean = mean(Sepal.Length))

ggplot(iris, aes(Sepal.Length)) +
geom_density() +
geom_vline(data = iris_means, aes(xintercept = mean)) +
geom_text(data = iris_means, aes(x = mean, label = mean),
y = 0.1, angle = 90, vjust = -0.2) +
facet_wrap(~Species)

enter image description here

关于r - 如何在密度图中添加来自 geom_vline 的 x 截距作为标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58091827/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com