Как построить линию со стандартным отклонением каждой строки с помощью ggplot - PullRequest
0 голосов
/ 23 мая 2018

Я хочу построить график с медианой каждой строки (не столбца!) (Кроме значений из первого столбца) со стандартным отклонением в качестве панели ошибок.Результат должен выглядеть примерно так:

enter image description here

У меня есть такой кадр данных:

myTable <- "
        1     -50     -52
        2     -44     -51
        3     -48     -50
        4     -50     -49
        5     -44     -49
        6     -48     -49
        7     -48     -49
        8     -44     -48
        9     -49     -48
       10     -48     -45
       11     -60     -48
       10     -50     -48
       11     -80     -47"
df <- read.table(text=myTable, header = TRUE)
df <- c("ID","Value1","Value2");

Мои данные хранятся вфайл .csv, который я загружаю со следующей строкой:

df <- read.csv(file="~/path/to/myFile.csv", header=FALSE, sep=",")

1 Ответ

0 голосов
/ 23 мая 2018

Приведенный ниже код создает вспомогательную функцию для предоставления значений медианы и sd для построения графика.Мы также преобразуем данные в «длинный» формат перед построением графика.

library(tidyverse)
theme_set(theme_bw())

df <- read.table(text=myTable, header = TRUE)
names(df) <- c("ID","Value1","Value2")

median_sd = function(x, n=1) {
  data_frame(y = median(x),
             sd = sd(x),
             ymin = y - n*sd,
             ymax = y + n*sd)
}

ggplot(df %>% gather(key, value, -ID), aes(ID, value)) +
  stat_summary(fun.data=median_sd, geom="errorbar", width=0.1) +
  stat_summary(fun.y=median, geom="line") +
  stat_summary(fun.y=median, geom="point") +
  scale_x_continuous(breaks=unique(df$ID))

enter image description here

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

ggplot(df %>% gather(key, value, -ID), aes(ID, value)) +
  stat_summary(fun.y=median, fun.ymin=function(x) median(x) - sd(x), 
               fun.ymax=function(x) median(x) + sd(x), geom="errorbar", width=0.1) +
  stat_summary(fun.y=median, geom="line") +
  stat_summary(fun.y=median, geom="point") +
  scale_x_continuous(breaks=unique(df$ID))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...