繁体   English   中英

ggplot2:在来自 2 个变量的标准误差的单个数据上添加平均值

[英]ggplot2: Adding mean on individual data with standard error from 2 variables

这是我第一次使用这个平台。 我希望我做对了。 我试图在来自两个组的标准 geom_point() 图中的单个数据之上添加一个组均值。 我很快就涵盖了那部分(见下面的代码)。 我想显示的数据来自两个连续变量。

问题是我希望组均值不仅代表均值,还代表均值的标准误差(来自两个变量中的每一个)。 我认为根据每个变量具有不同高度和宽度的“+”号将是一个好主意,但我找不到任何地方如何更改单个点的高度和宽度(单独)。

到目前为止,代码类似于:

DataMean <- Data %>% 
        group_by(Group) %>% 
        summarise(x = mean(x),
                  y= mean(y))

ggplot(Data, aes(x = x, y = y, shape = as.factor(Group))) +
  geom_point() +
  geom_point(data = DataMean, size = 4, shape = 3)

形状 3 是 R 中的“+”符号。但是,我不知道如何更改该“+”符号的垂直/水平条的高度/宽度以使其对应于每个组的标准误差意思。 到目前为止,我得到了下面的图表。

谢谢,祝你有美好的一天。 图形

为了绘制范围与数据可变性(均值的标准误差)成正比的交叉图,请使用两个geom_linerange图层,其范围基于标准误差计算。

library(dplyr)
library(ggplot2)

DataMean <- Data %>%
  group_by(Group) %>%
  summarise(across(everything(), list(mean = mean, sd = sd), .names = "{.col}_{.fn}"))

DataMean
## A tibble: 3 x 5
#  Group      x_mean  x_sd y_mean  y_sd
#  <fct>       <dbl> <dbl>  <dbl> <dbl>
#1 setosa       1.46 0.174  0.246 0.105
#2 versicolor   4.26 0.470  1.33  0.198
#3 virginica    5.55 0.552  2.03  0.275

ggplot() +
  geom_point(data = Data, aes(x, y, group = Group)) +
  # vertical bars
  geom_linerange(
    data = DataMean,
    mapping = aes(
      x = x_mean,
      ymin = y_mean - y_sd, ymax = y_mean + y_sd)) +
  # horizontal bars
  geom_linerange(
    data = DataMean,
    mapping = aes(
      x = x_mean, xmin = x_mean - x_sd, xmax = x_mean + x_sd,
      y = y_mean)
  ) +
  theme_bw()

在此处输入图片说明


测试数据

Data <- iris[3:5]
names(Data) <- c("x", "y", "Group")

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM