簡體   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