Сложность с ошибками на объекте facet_wrap () - PullRequest
2 голосов
/ 01 июля 2019

Я пытаюсь добавить полосы ошибок в график facet_wrap, но не могу заставить R создать график, который мне нужен, без сообщений об ошибках. Я написал следующий код, который создает желаемый график, однако, похоже, я не могу заставить часть кода ошибки работать должным образом.

ggplot(data = filter(Total, Cell_Line != "stDev"), aes(Time, Killing)) + 
  geom_line(data = transform(filter(Total, Cell_Line == "Wild_Type"), Cell_Line = NULL), group = 1) +
  #geom_errorbar(aes(x = filter(Total, Cell_Line == "Wild_Type")[,2], ymax = filter(Total, Cell_Line == "Wild_Type")[,3] + filter(Total, Cell_Line == "stDev")[,3], ymin = filter(Total, Cell_Line == "Wild_Type")[,3] - filter(Total, Cell_Line == "stDev")[,3]), data = filter(Total, Cell_Line == "Wild_Type" | Cell_Line == "stDev")) +
  geom_point(colour = "cadetblue") +
  facet_grid_paginate(Cell_Line ~ Run, ncol = 4, nrow = 4)

Этот код создает график Образец графика , что почти то, что я хочу, просто отсутствуют полосы ошибок на черной линии.

Вот вершина фрейма данных, который я использую для построения графика:

Total <-
structure(list(Cell_Line = c("3", "7", "8", "17", "19", "20", 
"29", "33", "38", "47", "49", "53", "55", "Wild_Type", "stDev", 
"3", "7", "8", "17", "19", "20", "29", "33", "38", "47", "49", 
"53", "55", "Wild_Type", "stDev"), Time = c("00", "00", "00", 
"00", "00", "00", "00", "00", "00", "00", "00", "00", "00", "00", 
"00", "02", "02", "02", "02", "02", "02", "02", "02", "02", "02", 
"02", "02", "02", "02", "02"), Killing = c(0, 0, 0, 0, 0, 0, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0.0704388, 0.2881066, -0.0132908, 
0.04700991, 0.03049371, -0.02243472, 0.1513817, 0.129636, 0.09328508, 
0.05876777, 0.1063291, 0.0357473, 0.1974026, 0.07732854, 0.07383331
), Run = c("run1", "run1", "run1", "run1", "run1", "run1", "run1", 
"run1", "run1", "run1", "run1", "run1", "run1", "run1", "run1", 
"run1", "run1", "run1", "run1", "run1", "run1", "run1", "run1", 
"run1", "run1", "run1", "run1", "run1", "run1", "run1")), row.names = c(NA, 
30L), class = "data.frame")

Это текущее сообщение об ошибке, которое я получаю: _

Ошибка: эстетика должна быть длиной 1 или такой же, как данные (90): x, ymax, ymin

1 Ответ

0 голосов
/ 01 июля 2019

Я бы подошел к этому, изменив данные для панелей ошибок, чтобы они имели доступ к нужным им значениям в разных столбцах каждой строки.

library(tidyverse)
library(ggforce)
ggplot(data = filter(Total, Cell_Line != "stDev"), aes(Time, Killing)) + 
  geom_line(data = transform(filter(Total, Cell_Line == "Wild_Type"), Cell_Line = NULL), group = 1) +
  geom_errorbar(data = Total %>% filter(Cell_Line %in% c("Wild_Type", "stDev")) %>% 
                  spread(Cell_Line, Killing),
                aes(x = Time, y = Wild_Type, ymax = Wild_Type + stDev, ymin = Wild_Type - stDev)) +      
  geom_point(colour = "cadetblue") +
  facet_grid_paginate(Cell_Line ~ Run, ncol = 4, nrow = 4)

enter image description here

...