Как правильно добавить среднее, стандартное отклонение и дрожание в geom_plot()? ggplot2

#r #ggplot2 #geom-point

Вопрос:

Я пытаюсь создать график, который показывает среднее значение, стандартное отклонение и точки каждого значения (дрожание). Однако мне не удалось вставить среднюю точку, и стандартные отклонения одинаковы для всех категорий (и это неверно).

Мой код (пример):

 # Package
library(ggplot2)

# Dataframe
fruit <- c()
value <- c()
for (i in 0:30) {
  list_fruit <- c('Apple','Banana','Pear')
  fruit <- append(fruit, sample(list_fruit, 1))
  value <-  append(value, sample(1:50, 1))
}
df <- data.frame(fruit, value)

# Seed
set.seed(123)

# Plot
ggplot(df, aes(x = fruit, y = value, color = fruit))  
  geom_point()  
  geom_jitter(width = 0.1)   
  geom_linerange(aes(ymin = mean(value)-sd(value), ymax = mean(value) sd(value)), col = 'black')  
  scale_color_manual(values=c('red','blue','purple'))
 

Результат
введите описание изображения здесь

Ответ №1:

Вероятно, это связано с тем, что в руководстве, на которое вы ссылаетесь, используется старая версия ggplot2, которая не допускала альтернативной ориентации данных. Например fun.y , сейчас называется fun . Ниже приведен пример в соответствии с ggplot2 версии 3.3.3.

 # Package
library(ggplot2)

# Dataframe
fruit <- c()
value <- c()
for (i in 0:30) {
  list_fruit <- c('Apple','Banana','Pear')
  fruit <- append(fruit, sample(list_fruit, 1))
  value <-  append(value, sample(1:50, 1))
}
df <- data.frame(fruit, value)

# Seed
set.seed(123)

# Plot
ggplot(df, aes(x = fruit, y = value, color = fruit))  
  geom_jitter(width = 0.1)   
  stat_summary(
    geom = "linerange",
    fun.data = mean_sdl, 
    fun.args = list(mult = 1),
    colour = "black"
  )  
  stat_summary(
    geom = "point",
    fun = mean,
    colour = "black", size = 3
  )  
  scale_color_manual(values=c('red','blue','purple'))
 

Создано 2021-03-17 пакетом reprex (v0.3.0)