Как добавить среднюю линию на график в ggplot2


Вы можете использовать следующий базовый синтаксис, чтобы добавить строку, представляющую среднее значение на графике в ggplot2:

 ggplot(df, aes(x=x, y=y)) +
  geom_point() +
  geom_hline(yintercept = mean(df$y, na. rm = TRUE ))

В следующем примере показано, как использовать этот синтаксис на практике.

Пример: добавьте среднюю линию на график в ggplot2.

Предположим, у нас есть следующий кадр данных в R:

 #create data frame
df <- data. frame (x=c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12),
                 y=c(2, 5, 6, 5, 7, 8, 10, 12, 10, 9, 11, 15))

#view head of data frame
head(df)

  xy
1 1 2
2 2 5
3 3 6
4 4 5
5 5 7
6 6 8

Мы можем использовать следующий код, чтобы создать диаграмму рассеяния x и y и добавить горизонтальную линию, которая представляет среднее значение y:

 library (ggplot2)

#create scatter plot with average line to represent average y-value
ggplot(df, aes(x=x, y=y)) +
    geom_point() +
    geom_hline(yintercept = mean(df$y, na. rm = TRUE )) 

ggplot2 добавляет среднюю линию

Мы видим, что к графику добавлена средняя линия чуть выше значения y, равного 8.

Если мы вычислим среднее значение y, то обнаружим, что оно равно 8,333:

 #calculate average y-value
mean(df$y, na. rm = TRUE )

[1] 8.333333

Обратите внимание, что мы также можем использовать аргументы color , lty и lwd для указания цвета, типа линии и ширины средней линии соответственно:

 library (ggplot2)

#create scatter plot with custom average line
ggplot(df, aes(x=x, y=y)) +
    geom_point() +
    geom_hline(yintercept = mean(df$y, na. rm = TRUE ), color=' blue ', lty=' dashed ', lwd= 2 ) 

Средняя линия теперь синяя, пунктирная и имеет ширину 2.

Полную онлайн-документацию по функции geom_hline() можно найти здесь .

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в ggplot2:

Как нарисовать линию тренда в ggplot2
Как настроить толщину линии в ggplot2
Как установить пределы оси в ggplot2

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *